Ошибка: вызов неопределенного метода Illuminate \ Http \ Request :: put ()
Мортеза Негахи
put () - метод сбора, $ request-> all () возвращает массив.
Joel Hinz
3
У объекта запроса есть методы replace () и merge (). Я обычно предпочитаю их использовать. См. Мой комментарий к вопросу, чтобы получить ТАК-ответ на этот вопрос.
Джоэл Хинц
@JoelHinz, я думал, что они не работают в Laravel 5, потому что я видел несколько сообщений, в которых у парней были проблемы с использованием этих методов. Но я заглянул в Requestисходный код L5 и вижу эти методы. Спасибо.
Алексей Мезенин
4
Никакого пота. Однако ваш ответ все еще неверен. Метод replace () заменяет весь ввод - вам нужно merge (), если вы хотите заменить только одно значение.
Будьте осторожны, метод replace удаляет исходные данные запроса и заменяет все своим массивом. \ Symfony \ Component \ HttpFoundation \ ParameterBag строка 54 публичная функция replace (array $ parameters = []) {$ this-> parameters = $ parameters; }
Олег
2
Здесь отличные ответы, но мне нужно было заменить значение в запросе JSON. Немного покопавшись в коде, я придумал следующий код. Дай мне знать, если я делаю что-то глупое.
Если вы используете настраиваемые запросы для проверки, для замены данных для проверки или для установки данных по умолчанию (для флажков или других), используйте метод переопределения prepareForValidation().
Ответы:
Использование
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['product_ref_code'] = 1650;
и, наконец, передайте новый запрос
источник
Если вам нужно обновить свойство в запросе, я рекомендую вам использовать метод replace из класса Request, используемый Laravel.
$request->replace(['property to update' => $newValue]);
источник
Здесь отличные ответы, но мне нужно было заменить значение в запросе JSON. Немного покопавшись в коде, я придумал следующий код. Дай мне знать, если я делаю что-то глупое.
$json = $request->json()->all(); $json['field'] = 'new value'; $request->json()->replace($json);
источник
Если вы используете настраиваемые запросы для проверки, для замены данных для проверки или для установки данных по умолчанию (для флажков или других), используйте метод переопределения
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'), ]); } }
Надеюсь, эта информация будет кому-нибудь полезна.
источник
Это работает для меня
$request = new Request(); $request->headers->set('content-type', 'application/json'); $request->initialize(['yourParam' => 2]);
проверить вывод
$queryParams = $request->query(); dd($queryParams['yourParam']); // 2
источник