动态创建 Laravel 请求对象

新手上路,请多包涵

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

有没有办法设置另一个控制器的 store 方法中需要的 Request 对象?我追踪了 Request 继承,并找到了 Symfony 的 Request 对象,它有一个 request 属性,实际上是一个 ParameterBag 拥有一个方法 add 到 add88 —带有值的参数。

我尝试了以下方法,但结果是 null

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

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

原文由 Ben Fransen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 646
2 个回答

您可以使用 replace()

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

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

dd($request->foo);

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

希望这可以帮助!

原文由 Rwd 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以克隆现有请求并用新数据填充它:

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

原文由 RyanT 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题