Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Propozycja: behavior `PdfController` – przycisk „Pobierz PDF” przy rekordzie w backendzie

Open
#301 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
30/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
php
Domain
backend

Research direction

Start by reading README.md lines 618–646 for the PDF API and traits/ManagesViewRecords.php lines 136–141 for the current preview behavior; the issue also points to formFindModelObject as a model lookup reference. The proposal spans a controller behavior, YAML configuration, toolbar/list buttons, permissions, filename and language handling, tests, and README documentation. Done means meeting all four acceptance criteria, including a 403 for direct URL access without permission.

Written by the indexing model from the issue text.

Description

code-review enhancement low-priority

Problem

Najczęstsza integracja w projektach to „Pobierz fakturę/umowę jako PDF” przy rekordzie w backendzie (zamówienie, faktura, zgłoszenie). Każdy projekt pisze to samo:

  • akcję kontrolera,
  • przycisk w toolbarze formularza,
  • sprawdzenie uprawnień,
  • nazwę pliku,
  • przekazanie rekordu do szablonu,
  • język dokumentu.

Stare issues pokazują, że pytania o pobieranie PDF-ów z komponentów i AJAX-a wracają: #14, #29, #39, #57, #69, #90.

Dowód

  • Plugin daje tylko API (PDF::loadTemplate(), README.md:618-646). Nie ma behavioru ani komponentu do powiązania szablonu z modelem.
  • Podgląd w panelu korzysta wyłącznie z Sample data (traits/ManagesViewRecords.php:136-141), więc nie da się podejrzeć szablonu z danymi prawdziwego rekordu.

Skutek

Powtarzany kod i powtarzane błędy w projektach: brak kontroli uprawnień do pobrania, PDF w złym języku, kłopoty z pobieraniem przez AJAX (#39, #69, #90).

Proponowane rozwiązanie

  • Renatio\DynamicPDF\Behaviors\PdfController z config_pdf.yaml: kod szablonu, nazwa zmiennej z rekordem (domyślnie record), wzorzec nazwy pliku (np. faktura-:number.pdf), tryb download/stream, wymagane uprawnienie i opcjonalnie pole rekordu z językiem.
  • Behavior dodaje akcję pdf($recordId) (znajdowanie rekordu jak formFindModelObject, sprawdzenie uprawnienia) i helper pdfRenderButton() do toolbaru formularza lub kolumny listy.
  • Zdarzenie albo metoda kontrolera pdfExtendData($record) do dopisania danych.

Kryteria akceptacji

  • Dodanie behavioru i pliku YAML do kontrolera daje działający przycisk pobierania PDF dla rekordu.
  • Brak wymaganego uprawnienia daje 403, także przy bezpośrednim wejściu na URL.
  • Nazwa pliku i język dokumentu biorą się z konfiguracji i rekordu.
  • Opis i przykład w README.
Dominant language
PHP
Stars
30
Forks
22
Avg merge
2h 23m
Merged PRs (30d)
77

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from mplodowski/dynamicpdf-plugin

All issues in mplodowski/dynamicpdf-plugin

Similar issues

More PHP issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.