Erstellen Sie eine Laravel Request-Objekt on-the-fly
Ich bin Umgang mit Daten, die in einem controller und will es pass weiter in einem anderen controller zu vermeiden doppelten code.
Gibt es eine Möglichkeit, einzustellen, bis ein Anfrage-Objekt, das benötigt wird, in der andere controller ist store
-Methode? Ich habe zurückgeführt, die Anfrage Vererbung und kam zu Symfony Anfrage-Objekt, das hat eine request
Eigenschaft, die in der Tat ein ParameterBag
hält, dass eine Methode add
hinzufügen von Parametern mit Werten.
Ich habe versucht, die folgenden, aber ich bin immer null
als Ergebnis:
$myRequest = new Request();
$myRequest->request->add(['foo' => 'bar']);
var_dump($myRequest->foo);
Ich bin auf Laravel 5.1 für dieses Projekt.
"Vermeiden doppelten code," du müssen zu abstrahieren, die gemeinsame Funktionalität in einer eigenen Klasse, geben Sie einen geeigneten mnemonischen Namen, schreiben Sie eine Reihe von unit-tests um ihn herum, und dann verspotten Sie es in den Controller, wenn unittesting-Controller.
InformationsquelleAutor Ben | 2016-10-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
replace()
:Alternativ würde es mehr Sinn machen, erstellen Sie eine
Job
für was auch immer Los ist in Ihrem zweiten controller und entfernen Sie dieShouldQueue
- Schnittstelle, um es synchron laufen.Hoffe, das hilft!
können Sie mir sagen, wie können wir ändern Sie den request-Methode auf
POST
?InformationsquelleAutor Ross Wilson
Erstellen eines request-Objekt mit
$myRequest = new Request();
erstellt das Objekt mitmethod = 'GET'
. Sie können Ihre Anfrage, die Methode, mit$myRequest->getMethod()
.Als die
request
- Eigenschaft enthält die Daten für POST-Anfragen, die Sie nicht verwenden können$myRequest->request->add()
standardmäßig. Zuerst müssen Sie die request-Methode POST:Übrigens mit
$myRequest->query->add()
können Sie Daten hinzufügen, um eine GET-Anforderung.InformationsquelleAutor andras bujna
Können Sie die request-parameter on-the-fly mit Hilfe dieser Methoden.
Ersetzen
ersetzen-Funktion doc
Wenn Sie in der controller dann, pass Request-Objekt in der Parameter der Funktion wie
Merge-Funktion
merge-Funktion, doc
add-Funktion
Hinweis:: in der all-Funktion erweitern wir die Anfrage, meine vorherigen parameter wird dort bleiben. Sie werden das hinzufügen Ihrer eigenen. Können Sie ersetzen Sie alle.
InformationsquelleAutor Hafiz Shehbaz Ali
"Vermeidet doppelten code," du müssen zu abstrahieren, die gemeinsame Funktionalität in einer eigenen Klasse, geben Sie einen geeigneten mnemonischen Namen, schreiben Sie eine Reihe von unit-tests um ihn herum, und dann verspotten Sie es in den Controller, wenn unittesting-Controller.
aber wenn Sie noch brauchen, um Anfragen:
und wenn Sie die volle Funktionalität des Antrags, müssen Sie einige zusätzliche Zeilen
InformationsquelleAutor Yevgeniy Afanasyev