Создание объекта запроса 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.