我正在使用app()->call()
逻辑来调用控制器/方法,更重要的是通过Request
类似的方式传递参数:
return app()->call('\blah\blah\ControllerName@methodName',['email'=>'[email protected],'name'=>'zach'])
我可以看到Controller和method被命中,但是当我dd($request)
或dd($request->all())
我正在传递/发送的参数未收到时。我在这个app()->call()
逻辑中错过了什么,使我错过了我的论点传递?
所述call
的应用程序容器的方法是一种用于调用任何可调用或类/方法的组合。它会收集注入所需的所有依赖关系,还将允许您传递用于函数/方法签名的特定参数。在您的情况下,您希望“输入”存在于传递到所调用方法的请求中,而不是方法调用的特定参数。
您可以通过将输入合并到绑定的Request中或克隆Request并将数据合并并显式传递来实现此目的:
request()->merge([
'email' => '[email protected]',
'name' => 'test',
]);
app()->call('\blah\blah\ControllerName@methodName');
这将注入绑定的请求,因为它是方法签名的一部分。我们已经将输入合并到此Request中,因此$request
您在方法中拥有的将拥有此数据。
您还可以克隆Request并合并数据,并专门传递此Request对象:
$request = clone request();
$request->merge(...);
app()->call('\blah\blah\ControllerName@methodName', ['request' => $request]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句