Мне нужно изменить значение моего параметра запроса следующим образом:
$request->name = "My Value!";
Я использую этот код, но не работает:
$request->offsetSet('img', $img);
Мне нужно изменить значение моего параметра запроса следующим образом:
$request->name = "My Value!";
Я использую этот код, но не работает:
$request->offsetSet('img', $img);
Ответы:
Использование merge():
$request->merge([
'user_id' => $modified_user_id_here,
]);
Просто! Нет необходимости переносить все $request->all()в другую переменную.
Пытаться:
$requestData = $request->all();
$requestData['img'] = $img;
Другой способ сделать это:
$request->merge(['img' => $img]);
Спасибо @JoelHinz за это.
Если вы хотите добавить или перезаписать вложенные данные:
$data['some']['thing'] = 'value';
$request->merge($data);
Если вы не внедряете Request $requestобъект, вы можете использовать глобальный request()помощник или \Request::фасад вместо$request
Requestисходный код L5 и вижу эти методы. Спасибо.
Если вам нужно настроить запрос
$data = $request->all();
вы можете передать имя поля и значение
$data['product_ref_code'] = 1650;
и, наконец, передайте новый запрос
$last = Product::create($data);
Если вам нужно обновить свойство в запросе, я рекомендую вам использовать метод replace из класса Request, используемый Laravel.
$request->replace(['property to update' => $newValue]);
Если вы используете настраиваемые запросы для проверки, для замены данных для проверки или для установки данных по умолчанию (для флажков или других), используйте метод переопределения 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'),
]);
}
}
Надеюсь, эта информация будет кому-нибудь полезна.