Gibt es eine Best Practice für PRG-Muster mit MVC?
In diesem Tutorial:
Ссылка
Die vorgeschlagene Lösung erfordert 4 Aktionen:
Create_Item (POST) = & gt; "setzt" das Formular zurück und leitet es an Display_Item weiter. Display_Item (GET) = & gt; zeigt das Formular (mit temporären Daten und Fehlern falls vorhanden)
Store_Item (POST) = & gt; versuchen Sie, Daten in der Datenbank zu speichern, wenn Fehler, Fehler speichern und an Display_Item umleiten, wenn der Erfolg in Display_Stored umgeleitet wird Display_Stored (GET) = & gt; zeigt das erstellte Objekt oder eine Erfolgsmeldung an, tec.
Nun, ich denke, dass die erste Aktion mit POST ein Problem ist, weil wir das Formular nicht mit einem Link starten können. Die Verwendung von GET in Create_Item scheint eine bessere Option zu sein.
Und wir können dasselbe auch mit 3 Aktionen tun (mit derselben Aktion für Create_Item und Display_Item, aber mit einem zusätzlichen Flag zum Zurücksetzen des Formulars, zum Beispiel:
Ссылка
Und wir können dasselbe auch mit nur zwei Aktionen tun, da wir ein if in- Create_Item verwenden können, um zu überprüfen, ob die Anfrage GET oder POST ist (also kombinieren wir Display_Item mit Store_Item).
< br>
Und wir können dasselbe auch mit nur einer Aktion tun, weil wir ein zusätzliches Flag (in der URL-Abfrage oder in einer Sitzung) haben können, um die Ergebnisse anstelle des Formulars anzuzeigen:
GET Ссылка = & gt; zeigt ein neues Formular an und leitet zur nächsten URL weiter
GET Ссылка = & gt; zeigt ein Formular mit temporären Daten und Fehlern, falls vorhanden
POST Ссылка = & gt; Speichern Sie Fehler in Temp oder Daten in der DB (und setzen Sie eine Sitzung Flag für den Erfolg) und leitet an die obige URL oder nächste URL
GET Ссылка = & gt; Wenn $ _SESSION ['Erfolg'] Ergebnisse anzeigen
Persönlich mag ich die Idee von 4 Aktionen, aber ich habe keinen wirklichen Vorteil gegenüber den anderen Optionen. Aber ich fühle mich nicht sicher, mein Design ohne echte Kriterien zu wählen
Kennt jemand die PROS und CONS jedes Entwurfs (falls vorhanden)?
Zum Beispiel sehe ich die 4 Aktionen sauberer, aber wenn wir ändern möchten, wie die Temp-Daten gespeichert werden, müssen wir es an 4 Stellen ändern
Danke!
Das Muster ist zu GET
ein leeres Formular, ändern Sie den Inhalt des Formulars, dann POST
das zum Server, der dann eine Weiterleitung an eine andere Seite sendet, die ein GET
ist, vielleicht zu einer Seite sagen %Code%. (Get- & gt;) Post- & gt; Redirect- & gt; Get
Die erste Aktion ist nicht wirklich Form submitted successfully.
. Das ist das Endergebnis, wenn Sie ein Formular ausfüllen und abschicken. Der Leitfaden ist mehr darüber, was nach dem POST
zu tun ist, als würde man keine Weiterleitung machen, dann bleibt der Benutzer auf einer Seite und sagt POST
, wo er einfach F5 drücken und ein weiteres Form submitted successfully
machen könnte. Bei dieser Weiterleitung befinden sie sich jedoch über eine sichere POST
auf dieser Ergebnisseite, was nicht zu einer doppelten Post führt.
Was die Implementierung betrifft, sollten Sie auf der Serverseite jeweils eine eigene Aktion ausführen. Dies ist inline mit der MVC / RESTful-Implementierung.
Sie könnten stattdessen 3 Aktionen verwenden, wenn Sie den 2. Aktionsaufruf GET
haben möchten. Die meisten REST / CRUD-Konventionen verwenden die 4, aber Sie haben die Wahl. Die Vorteile sind die gleichen wie die REST / MVC Route überhaupt.
Siehe auch diese Ressourcen:
Tags und Links php model-view-controller post-redirect-get