So löschen Sie eine Entität aus einer Vorlage mit einer Liste von Entitäten (CRUD)?

7

Erläuterung:

Ich habe die CRUD einer Entität generiert und folgende Standardaktionen erhalten:

  • indexAction (): listet alle Entitäten auf.
  • showAction ($ id): findet (nach ID) und zeigt eine Entität an.
  • deleteAction ($ id): löscht eine Entität.
  • weitere Aktionen.

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:

%Vor%

Wie Sie sehen, ist der $ id Parameter für die Methode createDeleteForm($id) obligatorisch, aber ich kann ihn nicht von indexAction() bekommen.

Frage:

Was ist der beste Weg, um dieses Problem zu lösen?

    
luisete89 25.08.2013, 19:04
quelle

1 Antwort

24

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%     
DevAntoine 17.09.2013, 08:11
quelle

Tags und Links