Создание объекта запроса Laravel на лету
я обрабатываю данные в одном контроллере и хочу передать его дальше в другой контроллер, чтобы избежать дублирования кода.
есть ли способ настроить объект запроса, который необходим в store
-метод? Я проследил наследование запроса и пришел к объекту запроса Symfony, который имеет request
свойство, которое на самом деле является ParameterBag
, который содержит метод add
добавить параметры со значениями к нему.
Я пробовал следующее, Но я получение null
как результат:
$myRequest = new Request();
$myRequest->request->add(['foo' => 'bar']);
var_dump($myRequest->foo);
Я на Laravel 5.1 для этого проекта.
2 ответов
можно использовать replace()
:
$request = new \Illuminate\Http\Request();
$request->replace(['foo' => 'bar']);
dd($request->foo);
в качестве альтернативы, было бы более целесообразно создать Job
для того, что происходит в вашем втором контроллере, и удалите ShouldQueue
интерфейс, чтобы заставить его работать синхронно.
надеюсь, что это помогает!
создание объекта запроса с $myRequest = new Request();
создает объект с method = 'GET'
. Вы можете проверить метод вашего запроса с помощью $myRequest->getMethod()
.
Как request
свойство содержит данные для запросов POST, которые вы не можете использовать $myRequest->request->add()
по умолчанию. Сначала вы должны установить метод запроса для POST:
$myRequest = new \Illuminate\Http\Request();
$myRequest->setMethod('POST');
$myRequest->request->add(['foo' => 'bar']);
dd($request->foo);
кстати, используя $myRequest->query->add()
вы можете добавить данные в запрос GET.