behandeln mehrere post-Anfragen zur gleichen url Laravel 5
Ich habe zwei Formulare auf einer Seite sowohl sendet die Daten über POST method
. Ich will damit beide Anfragen auf dieselbe url ich.e /home und nutzen unterschiedliche Steuerungen und Methoden für beide Formen. Unten sind zwei Wege.
Route::post('home' ,'FacebookControllers\PostsController@save');
Route::post('home' , 'FacebookControllers\MessageController@storeMessage');
In PostsController@save
checke ich
if(isset($_POST['submitPost']) && $_SERVER['REQUEST_METHOD']=='POST'){
//do something
}
und in MessageController@storeMessage
ich Tue das gleiche für die andere form
if(isset($_POST['sendMessage']) && $_SERVER['REQUEST_METHOD']=='POST'){
return "got it";
}
Das problem ist, dass nur der zweite Weg funktioniert. Ich weiss nicht ob ich bin richtig oder falsch. Bitte führe mich in die richtige Richtung.
- Klingt wie $_POST['submitPost'] ist nicht gesetzt. Versuchen Sie es mit dd($_POST); am Anfang des PostsController@sparen und dann ein Formular zu.
- es keine Ausgabe, nichts.
- Warum sind Sie die überprüfung für $_POST? Sollten Sie injizieren Anfrage und prüfen dann. Auch können Sie nicht zwei Routen mit der gleichen Methode auf einer route. Besser lassen Sie die post, um eine bestimmte Strecke, und übergeben Sie es an einen job abhängig von den Gebuchten Wert.
- können Sie erklären, ein wenig mehr bitte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
funktioniert nicht - wie sollte laravel bestimmen, wo die post ist? Der Weg, den ich gehen würde ist zwei jobs und eine route, dann überprüfen Sie den Wert in
Request
und Versand den richtigen job.Erstellen Sie zunächst die beiden job-Klassen mit
Die erzeugte Datei sieht dann so ähnlich wie diese:
In der Auftrag
handle()
Methode, die Sie können tun, was Sie tun wollten, in Ihrer Steuerung.Nun die Strecke, machen wir
und nach dieser in Ihrer PostsController, fügen Sie eine Methode (ich nannte es findAction) wie folgt:
Diese Weise wird die richtige Aktion ausgeführt wird, je nach den übermittelten Wert.
Den job wechseln Konstruktor so etwas wie:
Haben Sie Zugriff auf die übermittelten Werte aus den Formularen, die Sie eingereicht haben, innerhalb der job -
handle()
Methode mit$this->data
dd($request)
an der Spitze der MethodeWenn der Zweck nur auf die Erhaltung der URL, die im browser angezeigt wird, können Sie einen trick anwenden, in dem Sie Ihren Beitrag Einreichen Anfrage an verschiedenen ROUTEN, die spezifisch vorhanden für die mit der Abwicklung und leiten Sie anschließend wieder zur gleichen URL.
Beispiel:
Dann in Ihrem Blick , die Sie vielleicht haben, zwei verschiedene Formen in der gleichen Ansicht:
Nun im controller, in der beide Aktionen etwas wie :
By doing so, die URL bleibt gleich, nachdem der Prozess abgeschlossen ist wird der Benutzer umgeleitet, um die gleiche URL mit dem status.
Werden kann, dies ist kein guter Programmierstil, aber Sie lösen das problem durch die Aufrechterhaltung der gleichen URL, während mehrere Beiträge zu dem gleichen controller in der gleichen Ansicht.
Der wichtigste Punkt hier ist, dass Sie unbedingt verhindern, dass ein Fehler während des Prozesses, indem Sie mit Bedingungen und leiten Sie zur gleichen URL falls es Probleme gibt, da sonst die Aktion wird versuchen zu zeigen, der Benutzer der schwierige ROUTE (yoursite.com/message) für irgendwelche Fehler.