fix(formulare): Antworten paginiert statt als Repeater (Memory-Limit) #1

Open
thiel wants to merge 1 commit from fix/formular-antworten-oom into main
Owner

Behebt Allowed memory size of 268435456 bytes exhausted beim Öffnen des Formular-Editors unter Kommunikation > Formulare.

Ursache: Der Antworten-Reiter baute einen Repeater::make('responses')->relationship() über alle Antworten. Der Komponentenbaum wächst mit Antworten x Formularfeldern, eingeklappte Repeater-Items werden von Filament trotzdem vollständig gerendert – der Blade-Output-Buffer lief auf mehrere MB und riss das 256M-Limit.

Fix:

  • Neuer Reiter Formular-Antworten (FormResponsesRelationManager, HasManyThrough über Event::formResponses): paginierte Tabelle (25/50/100), Suche nach Name/E-Mail, Filter nach Formular, Bearbeiten/Löschen je Antwort im Modal. Die Antwortfelder werden pro Antwort aus dem jeweiligen Formular aufgebaut.
  • Antworten-Reiter im Editor: nur noch Kennzahlen, CSV/PDF/E-Mail-Liste und Verweis auf den neuen Reiter.
  • Zeilen-Aktion Antworten in der Formular-Tabelle (Direktlink, Tab-Index wird berechnet statt hart hinterlegt).
  • memory_limit 256M -> 512M als Sicherheitsmarge für die übrigen Repeater-Editoren.

Tests: 5 neue Feature-Tests (Pagination, Bearbeiten inkl. Erhalt der übrigen Antwortwerte, Löschen, Tab-Link, Editor skaliert nicht mehr mit der Antwortzahl). Gesamte Suite: 728 passed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LFofqq7YLjAUtARfSfexPx

Behebt `Allowed memory size of 268435456 bytes exhausted` beim Öffnen des Formular-Editors unter Kommunikation > Formulare. **Ursache:** Der Antworten-Reiter baute einen `Repeater::make('responses')->relationship()` über *alle* Antworten. Der Komponentenbaum wächst mit Antworten x Formularfeldern, eingeklappte Repeater-Items werden von Filament trotzdem vollständig gerendert – der Blade-Output-Buffer lief auf mehrere MB und riss das 256M-Limit. **Fix:** - Neuer Reiter *Formular-Antworten* (`FormResponsesRelationManager`, HasManyThrough über `Event::formResponses`): paginierte Tabelle (25/50/100), Suche nach Name/E-Mail, Filter nach Formular, Bearbeiten/Löschen je Antwort im Modal. Die Antwortfelder werden pro Antwort aus dem jeweiligen Formular aufgebaut. - Antworten-Reiter im Editor: nur noch Kennzahlen, CSV/PDF/E-Mail-Liste und Verweis auf den neuen Reiter. - Zeilen-Aktion *Antworten* in der Formular-Tabelle (Direktlink, Tab-Index wird berechnet statt hart hinterlegt). - `memory_limit` 256M -> 512M als Sicherheitsmarge für die übrigen Repeater-Editoren. **Tests:** 5 neue Feature-Tests (Pagination, Bearbeiten inkl. Erhalt der übrigen Antwortwerte, Löschen, Tab-Link, Editor skaliert nicht mehr mit der Antwortzahl). Gesamte Suite: 728 passed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01LFofqq7YLjAUtARfSfexPx
fix(formulare): Antworten paginiert statt als Repeater (Memory-Limit)
All checks were successful
Tests / phpunit (pull_request) Successful in 2m44s
f3891fbda8
Der Antworten-Reiter im Formular-Editor baute einen Relationship-Repeater
ueber alle Antworten. Der Komponentenbaum waechst mit Antworten x
Formularfeldern; eingeklappte Repeater-Items werden von Filament trotzdem
vollstaendig gerendert. Ab einigen Dutzend Antworten lief das
Bearbeiten-Modal damit in "Allowed memory size of 268435456 bytes
exhausted" (Blade-Output-Buffer).

- Neuer FormResponsesRelationManager (Reiter "Formular-Antworten") mit
  paginierter Tabelle, Suche, Formular-Filter sowie Bearbeiten/Loeschen je
  Antwort im Modal. Die Antwortfelder werden pro Antwort aus dem jeweiligen
  Formular aufgebaut.
- Antworten-Reiter im Editor: nur noch Kennzahlen, Exporte und Verweis.
- Zeilen-Aktion "Antworten" in der Formular-Tabelle.
- areaRelationManagers() ist jetzt statisch, damit Bereichsseiten
  Direktlinks auf einen Reiter (?relation=N) erzeugen koennen, ohne den
  Index hart zu hinterlegen.
- memory_limit 256M -> 512M als Sicherheitsmarge.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFofqq7YLjAUtARfSfexPx
All checks were successful
Tests / phpunit (pull_request) Successful in 2m44s
This pull request has changes conflicting with the target branch.
  • CHANGELOG.md
  • app/Filament/Resources/Events/Pages/EventAreaPage.php
  • app/Filament/Resources/Events/Pages/EventProduktion.php
  • app/Filament/Resources/Events/RelationManagers/FormsRelationManager.php
  • docker/php.ini
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/formular-antworten-oom:fix/formular-antworten-oom
git switch fix/formular-antworten-oom

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff fix/formular-antworten-oom
git switch fix/formular-antworten-oom
git rebase main
git switch main
git merge --ff-only fix/formular-antworten-oom
git switch fix/formular-antworten-oom
git rebase main
git switch main
git merge --no-ff fix/formular-antworten-oom
git switch main
git merge --squash fix/formular-antworten-oom
git switch main
git merge --ff-only fix/formular-antworten-oom
git switch main
git merge fix/formular-antworten-oom
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
thiel/natec-eveni!1
No description provided.