问题描述
注册后我还需要检索查询字符串参数,所以我在两个函数中都使用了 Request $request,但是如何在第二个函数中也传递 Request?
提前致谢!
protected function create(Request $request,array $data) // added "Request $request" for retreive querystring params
{
$user->name = $data['name'];
$user->surname = $data['surname'];
$utm_source = $request->query('utm_source');
$user->save();
}
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all()))); // here I'll need two pass two params...
return $this->registered($request,$user) ?: redirect($this->redirectPath());
}
解决方法
尝试以下操作:
由于您在 $request
方法中对 create
参数使用了提示,因此它必须是 Request
类的实例。
Request::class
和 $request->all()
不同,因此传递 $request->all()
将不起作用。
protected function create(Request $request)
{
$user->name = $request->name;
$user->surname = $request->surname;
$utm_source = $request->query('utm_source');
$user->save();
}
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request)));
return $this->registered($request,$user) ?: redirect($this->redirectPath());
}
,
Laravels
容器绑定仅适用于被调用的控制器方法,如果通过普通的 PHP
语法调用它,则需要传递每个参数。
event(new Registered($user = $this->create($request,$request->all())));
其次,您可以在应用程序的任何位置,使用容器来获取您的请求,只要生命周期有偏离路线的请求(例如,不在作业或命令中)。
protected function create(array $data)
{
$request = resolve(Request::class);