Muszę zmienić wartość mojego parametru żądania w następujący sposób:
$request->name = "My Value!";
Używam tego kodu, ale nie działa:
$request->offsetSet('img', $img);
Muszę zmienić wartość mojego parametru żądania w następujący sposób:
$request->name = "My Value!";
Używam tego kodu, ale nie działa:
$request->offsetSet('img', $img);
Odpowiedzi:
Zastosowanie merge()
:
$request->merge([
'user_id' => $modified_user_id_here,
]);
Prosty! Nie ma potrzeby przenoszenia całości $request->all()
do innej zmiennej.
Spróbuj:
$requestData = $request->all();
$requestData['img'] = $img;
Inny sposób na zrobienie tego:
$request->merge(['img' => $img]);
Dzięki @JoelHinz za to.
Jeśli chcesz dodać lub nadpisać zagnieżdżone dane:
$data['some']['thing'] = 'value';
$request->merge($data);
Jeśli nie wstrzykniesz Request $request
obiektu, możesz użyć globalnego request()
pomocnika lub \Request::
fasady zamiast$request
Request
kodu źródłowego L5 i widzę te metody. Dzięki.
Jeśli chcesz dostosować żądanie
$data = $request->all();
możesz podać nazwę pola i wartość
$data['product_ref_code'] = 1650;
i na koniec przekaż nową prośbę
$last = Product::create($data);
Jeśli chcesz zaktualizować właściwość w żądaniu, polecam skorzystać z metody replace z klasy Request używanej przez Laravel
$request->replace(['property to update' => $newValue]);
Jeśli używasz niestandardowych żądań walidacji, zastąpienia danych do walidacji lub ustawienia danych domyślnych (dla pól wyboru lub innych), użyj metody zastępowania 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'),
]);
}
}
Mam nadzieję, że ta informacja komuś się przyda.
Użyj add
$request->request->add(['img' => $img]);