Ich habe die CRUD einer Entität generiert und folgende Standardaktionen erhalten:
So habe ich gesehen, dass ich nur eine Entität innerhalb der Aktionen löschen kann, die den Parameter $ id verwenden (zB: showAction ($ id)), aber Ich möchte eine Entität innerhalb der indexAction Vorlage löschen, weil ich eine speichere Schritt zu Benutzern.
deleteAction benötigt eine Anfrage, eine ID und verwendet die POST-Methode.
Ich habe versucht, etwas wie:
zu programmieren %Vor%Wenn ich die Aktion ausführe, erhalte ich den folgenden Fehler:
Keine Route gefunden für "GET / acme / something / 4 / delete": Methode nicht erlaubt (Erlaube: POST, DELETE)
Diese Antwort ist klar und es ist, was ich erwartet habe, also habe ich versucht, etwas ähnliches zu tun, aber ein Formular zu verwenden. Etwas wie das:
%Vor% Aber die Zeile {{ form_widget(delete_form) }}
ist ein Problem, weil indexAction()
keinen Parameter hat und diesen Code benötigt:
Wie Sie sehen, ist der $ id Parameter für die Methode createDeleteForm($id)
obligatorisch, aber ich kann ihn nicht von indexAction()
bekommen.
Was ist der beste Weg, um dieses Problem zu lösen?
Wenn Sie nur so viele Schaltflächen zum Löschen haben möchten wie Elemente in Ihrem Index, können Sie dies einfach tun.
Fügen Sie in der indexAction die folgende Schleife hinzu und vergessen Sie nicht, den Parameter an die Ansicht zu übergeben.
%Vor%Grundlegend mache ich einfach eine Schleife über alle meine Entitäten und erzeuge das entsprechende Löschformular mit der eingebauten Methode, die von der Crud generiert wird, speichert jedes Formular in einem Array und übergibt es an die Ansicht.
Fügen Sie dann in der Ansicht einfach das Formular hinzu, das bereits in der generierten edit.html.twig-Ansicht verfügbar ist, und bearbeiten Sie den Parameter form_widget:
%Vor%Tags und Links forms symfony crud symfony-2.3