Ich benutze Symfony 2.2 und die neueste Version von FOSRestBundle. So habe ich es geschafft, die meisten Aktionen funktionieren zu lassen, aber ich habe anscheinend ein Problem mit dem FormBuilder, dass ich den Request meines PUT-Aufrufs übergebe.
Ich habe das Anfrageobjekt überprüft und es kommt von meinem Backbone.je-Modell wie es sollte (.save ()) Aber nach der Bindung an das Formular kommt die Entity nur mit der ID zurück, die flush () einen Fehler verursacht da Pflichtfelder nicht ausgefüllt sind.
Die Aktion im Controller:
%Vor%Das Formular, das aufgerufen wird:
%Vor%
Ich habe alles bisher versucht, aber ich bin ziemlich neu mit Symfony und ich kann nicht verstehen, warum die $ -Entität nicht die Werte enthält, die durch die Anfrage erhalten werden.
Zu Ihrer Information: Ich habe versucht, es manuell zu tun, indem ich eine Container-Klasse mit der ID der Anfrage instanziiere und die Setter dazu benutze, Werte einzugeben, und es funktioniert ganz gut, ich möchte einfach die Dinge als Symfony richtig machen schlägt vor, es sollte getan werden.
Vielen Dank im Voraus.
Ich denke, dass Sie das gleiche Problem haben, das ich hatte: Der Fehler liegt im Namen der Form.
In Ihrer Formulardefinition lautet der Name "greenthumbed_apibundle_containertype". öffentliche Funktion getName () { return 'greenthumbed_apibundle_containertype'; }
Um eine Anfrage an dieses Formular zu binden, sollte der json so aussehen:
%Vor%Da Backbone .save () Methode diese Art von JSON
liefert %Vor%Sie müssen den Namen aus dem Formular entfernen:
%Vor%Im Allgemeinen, wenn Sie einen JSON mit einem Platzhalter wie
posten möchten %Vor%Ihr Formularname muss genau "etwas" sein
aus meiner eigenen Frage hier
Verwenden Sie den ParamConverter , um Ihre Entität automatisch als Argument in Ihre Methode einzufügen .
%Vor%siehe Ссылка
Leider ist das Leben nicht so einfach, da die meisten Browser dies tun unterstützt nicht das Senden von PUT- und DELETE-Anfragen. Zum Glück Symfony2 bietet Ihnen eine einfache Möglichkeit, diese Einschränkung zu umgehen. Durch Ein Parameter _method in der Abfragezeichenfolge oder Parameter von einem HTTP-Anfrage, Symfony2 wird dies als Methode beim Abgleich verwenden Routen. Formulare enthalten automatisch ein verstecktes Feld für diesen Parameter wenn ihre Übermittlungsmethode nicht GET oder POST ist. Siehe das zugehörige Kapitel Weitere Informationen finden Sie in der Formulardokumentation.
und Ссылка
Wenn die Methode des Formulars nicht GET oder POST ist, sondern PUT, PATCH oder DELETE, Symfony2 fügt ein verstecktes Feld mit dem Namen "_method" ein speichert diese Methode. Das Formular wird in einem normalen POST eingereicht Anfrage, aber Symfony2 Router ist in der Lage, die "_method" zu erkennen Parameter und interpretiert die Anfrage als PUT, PATCH oder DELETE anfordern. Lesen Sie das Cookbook-Kapitel "So verwenden Sie HTTP-Methoden über GET hinaus und POST in Routen "für weitere Informationen.
Tags und Links php symfony symfony-forms fosrestbundle