Laravel应用程序->;call()不';t将参数传递给控制器

Laravel应用程序->;call()不';t将参数传递给控制器,laravel,Laravel,我使用app()->call()逻辑调用控制器/方法,更重要的是通过请求传递参数,如下所示: return app()->call('\blah\blah\ControllerName@methodName“,[“电子邮件”=>”test@domain.com,'name'=>'zach']) 我可以看到控制器和方法正在被命中,但是当我dd($request)或dd($request->all())时,我传递/发送的参数没有被接收。在这个app()->call()逻辑中,我遗漏了什么,使我错过了

我使用
app()->call()
逻辑调用控制器/方法,更重要的是通过
请求传递参数,如下所示:

return app()->call('\blah\blah\ControllerName@methodName“,[“电子邮件”=>”test@domain.com,'name'=>'zach'])


我可以看到控制器和方法正在被命中,但是当我
dd($request)
dd($request->all())
时,我传递/发送的参数没有被接收。在这个
app()->call()
逻辑中,我遗漏了什么,使我错过了传递参数的过程?

我相信您正在尝试使用签名
methodName(Request$Request)
调用一个方法。由于您希望请求是一个数组,并且参数包装在一个数组中,因此您的调用需要如下所示:

return app()->call('\blah\blah\ControllerName@methodName',[
    'request' => request()->merge(['email'=>'test@domain.com','name'=>'zach'])
]);

应用程序容器的
call
方法用于调用任何可调用或类/方法组合。它将收集注入所需的任何依赖项,并允许您为函数/方法的签名传递特定参数。在您的情况下,您希望传递到被调用方法的请求上存在“输入”,而不是方法调用的特定参数

您可以通过将输入合并到绑定请求中或克隆请求并合并数据并显式传递来实现这一点:

request()->merge([
    'email' => 'something@something.com',
    'name' => 'test',
]);

app()->call('\blah\blah\ControllerName@methodName');
这将注入绑定请求,因为它是方法签名的一部分。我们已将输入合并到此请求中,因此方法中的
$Request
将包含此数据

您还可以克隆请求并合并数据,特别是传递此请求对象:

$request = clone request();
$request->merge(...);

app()->call('\blah\blah\ControllerName@methodName', ['request' => $request]);

是的,我将编辑问题。
$request->all
是一个函数,请尝试使用
dd($request->all())
是的,您是正确的。我又错了。无论如何,我看不到被调用的控制器方法中传递的参数。@ZachSmith抱歉,我忘记了命名请求parameter@lagbox也是正确的,如果这是一个实际的Illumb\Http\Request类,那么在传入之前,您将负责自己构建它。似乎情况并非如此。当控制器方法中的I
dd($request)
时,它不会返回任何传递的参数。使用更新的答案,它会抛出以下错误:
类型错误:传递给App\Http\Controllers\Api\ContactController::submit()的参数1必须是\Http\request的实例,给出的数组
惊人-完美的答案和适当的概念教育。非常感谢你帮我做这件事!