Gibt es in Laravel eine Möglichkeit, einem Anfrage-Array Werte hinzuzufügen?
Lesezeit: 4 Minuten
Vijayanand Premnath
Ich stoße in Laravel auf eine Situation, während ich eine store()- oder update()-Methode mit Request-Parameter aufrufe, um der Anfrage einen zusätzlichen Wert hinzuzufügen, bevor Eloquent-Funktionen aufgerufen werden. Gibt es dafür eine Möglichkeit.
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
Welche Art von Behandlung möchten Sie durchführen? Möchten Sie Schlüsselwerte hinzufügen $request->all() Reihe?
– Hammerbot
9. Mai 2016 um 4:50 Uhr
Ja, ich muss einen Schlüsselwert hinzufügen
– Vijayanand Premnath
9. Mai 2016 um 4:51 Uhr
Kannst du die nicht benutzen array_add() Helfer? $array = array_add($request->all(), 'new_key', $value);: laravel.com/docs/5.2/helpers#method-array-add Wenn dies nicht das ist, wonach Sie suchen, könnten Sie weitere Informationen zu Ihrer Frage bereitstellen?
– Hammerbot
9. Mai 2016 um 4:56 Uhr
$request ist nach meinem Verständnis ein PHP-Objekt. Wenn Sie dem Controller einige Funktionen hinzufügen möchten, konvertieren Sie das Anforderungsobjekt in ein Array und fügen Sie dann hinzu, was immer Sie möchten
– Chathura Hettiarachchi
9. Mai 2016 um 5:11 Uhr
Alexey Mezenin
Normalerweise möchten Sie einem Request-Objekt nichts hinzufügen, es ist besser, Sammlung und zu verwenden put() Helfer:
function store(Request $request)
{
// some additional logic or checking
User::create(array_merge($request->all(), ['index' => 'value']));
}
Ja, es funktioniert jetzt für mich. Ich habe den Code als Funktion geändert store(Request $request) { // etwas zusätzliche Logik oder Überprüfung $plan = 123; // etwas Logik um den Plan des Benutzers festzulegen $request->request->add([‘plan’ => $plan]); User::create($request->all()); }
– Vijayanand Premnath
9. Mai 2016 um 6:21 Uhr
Dies funktioniert nicht, weil $request->all() ein Array und keine Sammlung ist.
– kjdion84
25. Juni 2017 um 23:24 Uhr
Ich denke, es muss $request->request->add([‘variable’ => ‘value’]);
– Sergej Onischtschenko
13. Juli 2018 um 6:32 Uhr
$request->request->add … Ich bekam die Fehlermeldung 「Undefined variable: request 」 Aber ich hatte die 「use Illuminate\Http\Request;」warum bekam ich die Fehlermeldung?
– Robspin
17. November 2018 um 3:55 Uhr
Muss ich $request=collect(); Erste? Ist $request eine Sammlung oder ein Array?
– Robspin
17. November 2018 um 4:01 Uhr
mushood badulla
In Bezug auf Alexey Mezenin Antworten:
Während ich seine Antwort verwendete, musste ich etwas direkt zum Request-Objekt hinzufügen und verwendete:
$request->request->add(['variable', 'value']);
Damit fügt es zwei Variablen hinzu:
$request[0] = 'variable', $request[1] = 'value'
Wenn Sie ein Neuling wie ich sind und ein Associate-Array benötigen, ist dies der richtige Weg
$request->request->add(['variable' => 'value']);
Hoffe, ich habe dir etwas Zeit gespart
PS: Danke @Alexeydu hast mir mit deiner Antwort wirklich weitergeholfen
$request->request->add … Ich bekam die Fehlermeldung 「Undefined variable: request 」 Aber ich hatte die 「use Illuminate\Http\Request;」warum bekam ich die Fehlermeldung?
– Robspin
17. November 2018 um 3:49 Uhr
@robspin Ich denke, es ist ziemlich spät, aber Sie haben die Anfrage wahrscheinlich nicht in die Funktion eingefügt, z. B.: function (Request $request)
– Mushood Badulla
25. Januar 2019 um 4:25 Uhr
Für diejenigen unter Ihnen, die suchen, warum Ihr Wert nicht in die Datenbank eingefügt wird, da ich diesen Wert der Datenbank nicht in meiner deklariert habe Model Klasse als: protected $fillable = ['slug'];
– fWd82
2. September 2020 um 10:12 Uhr
Ich habe es versucht $request->merge($array) funktionieren in Laravel 5.2 und es funktioniert perfekt.
Beispiel:
$request->merge(["key"=>"value"]);
Dies sollte als gültige Antwort markiert werden. Funktioniert in Laravel 9. Dies funktioniert nicht mehr in Laravel 9: $request->request->add([‘variable’ => ‘value’]);
– John Smith
17. Februar um 10:10 Uhr
Zu diesem Thema wurde genug gesagt, aber ich konnte nicht widerstehen, meine eigene Antwort hinzuzufügen. Ich glaube, der einfachste Ansatz ist
request()->merge([ 'foo' => 'bar' ]);
cosminpanait
Sie können auch den folgenden Code verwenden
$request->request->set(key, value).
Passt für mich besser.
Zumindest bei Laravel 5.6 wird das so gemacht! Gute Antwort
– Rockin4Life33
13. August 2018 um 21:28 Uhr
Wiicho Orozco
In Laravel 5.6 können wir zum Beispiel Parameter zwischen Middlewares übergeben:
FirstMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
return $next($request->merge(['key' => 'value']));
}
ZweiteMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
dd($request->all());
}
Zumindest bei Laravel 5.6 wird das so gemacht! Gute Antwort
– Rockin4Life33
13. August 2018 um 21:28 Uhr
Verwenden Sie einfach dies: –
$request->merge(['index' => 'value']);
arbeite für mich
Dadurch wird Ihrem Anforderungsobjekt mit dem angegebenen Index ein neuer Wert hinzugefügt, den Sie in Ihrer Funktion oder beim Speichern aller Anforderungsdaten in der Datenbank verwenden können.
Ihre Antwort könnte verbessert werden, indem Sie weitere Informationen darüber hinzufügen, was der Code tut und wie er dem OP hilft.
– Tyler2P
6. Dezember 2021 um 15:51 Uhr
10186300cookie-checkGibt es in Laravel eine Möglichkeit, einem Anfrage-Array Werte hinzuzufügen?yes
Welche Art von Behandlung möchten Sie durchführen? Möchten Sie Schlüsselwerte hinzufügen
$request->all()
Reihe?– Hammerbot
9. Mai 2016 um 4:50 Uhr
Ja, ich muss einen Schlüsselwert hinzufügen
– Vijayanand Premnath
9. Mai 2016 um 4:51 Uhr
Kannst du die nicht benutzen
array_add()
Helfer?$array = array_add($request->all(), 'new_key', $value);
: laravel.com/docs/5.2/helpers#method-array-add Wenn dies nicht das ist, wonach Sie suchen, könnten Sie weitere Informationen zu Ihrer Frage bereitstellen?– Hammerbot
9. Mai 2016 um 4:56 Uhr
$request ist nach meinem Verständnis ein PHP-Objekt. Wenn Sie dem Controller einige Funktionen hinzufügen möchten, konvertieren Sie das Anforderungsobjekt in ein Array und fügen Sie dann hinzu, was immer Sie möchten
– Chathura Hettiarachchi
9. Mai 2016 um 5:11 Uhr