动态创建 Laravel 请求对象

2022-08-30 09:02:00

我正在一个控制器中处理数据,并希望将其进一步传递到另一个控制器中以避免重复代码。

有没有办法设置其他控制器的 -method 中所需的 Request 对象?我已经追溯了 Request 继承,并来到了 Symfony 的 Request 对象,该对象具有一个属性,该属性实际上是一个包含添加带有值的参数的方法。storerequestParameterBagadd

我已经尝试了以下方法,但我得到了结果:null

$myRequest = new Request();
$myRequest->request->add(['foo' => 'bar']);
var_dump($myRequest->foo);

我正在为这个项目使用Laravel 5.1。


答案 1

您可以使用 :replace()

$request = new \Illuminate\Http\Request();

$request->replace(['foo' => 'bar']);

dd($request->foo);

或者,为第二个控制器中发生的任何事情创建一个并删除接口以使其同步运行会更有意义。JobShouldQueue

希望这有帮助!


答案 2

创建请求对象 时,将使用 创建该对象。您可以使用 检查请求的方法。由于该属性保存 POST 请求的数据,因此默认情况下无法使用。首先,您必须将请求的方法设置为POST:$myRequest = new Request();method = 'GET'$myRequest->getMethod()request$myRequest->request->add()

$myRequest = new \Illuminate\Http\Request();
$myRequest->setMethod('POST');
$myRequest->request->add(['foo' => 'bar']);
dd($request->foo);

顺便说一句,您可以使用将数据添加到GET请求中。$myRequest->query->add()


推荐