Devo cambiare il valore del mio parametro di richiesta in questo modo:
$request->name = "My Value!";
Uso questo codice ma non funziona:
$request->offsetSet('img', $img);
Devo cambiare il valore del mio parametro di richiesta in questo modo:
$request->name = "My Value!";
Uso questo codice ma non funziona:
$request->offsetSet('img', $img);
Risposte:
Usa merge()
:
$request->merge([
'user_id' => $modified_user_id_here,
]);
Semplice! Non è necessario trasferire l'intero $request->all()
su un'altra variabile.
Prova a:
$requestData = $request->all();
$requestData['img'] = $img;
Un altro modo per farlo:
$request->merge(['img' => $img]);
Grazie a @JoelHinz per questo.
Se desideri aggiungere o sovrascrivere i dati nidificati:
$data['some']['thing'] = 'value';
$request->merge($data);
Se non inserisci un Request $request
oggetto, puoi usare l' request()
helper globale o la \Request::
facciata invece di$request
Request
codice sorgente di L5 e posso vedere questi metodi. Grazie.
Se hai bisogno di personalizzare la richiesta
$data = $request->all();
puoi passare il nome del campo e il valore
$data['product_ref_code'] = 1650;
e infine passare la nuova richiesta
$last = Product::create($data);
Se devi aggiornare una proprietà nella richiesta, ti consiglio di utilizzare il metodo di sostituzione dalla classe Request usata da Laravel
$request->replace(['property to update' => $newValue]);
Ottime risposte qui, ma avevo bisogno di sostituire un valore in una richiesta JSON. Dopo aver scavato un po 'nel codice, ho trovato il seguente codice. Fammi sapere se sto facendo qualcosa di stupido.
$json = $request->json()->all();
$json['field'] = 'new value';
$request->json()->replace($json);
Se si utilizzano richieste personalizzate per la convalida, per sostituire i dati per la convalida o per impostare i dati predefiniti (per caselle di controllo o altro), utilizzare il metodo di sostituzione prepareForValidation()
.
namespace App\Http\Requests\Admin\Category;
class CategoryRequest extends AbstractRequest
{
protected function prepareForValidation()
{
if ( ! $this->get('url')) {
$this->merge([
'url' => $this->get('name'),
]);
}
$this->merge([
'url' => \Str::slug($this->get('url')),
'active' => (int)$this->get('active'),
]);
}
}
Spero che queste informazioni siano utili a qualcuno.