首页 > 解决方案 > Laravel - 在调用另一个函数的函数中使用请求

问题描述

我还需要在注册后检索查询字符串参数,所以我在两个函数中都使用了 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());
}

标签: laravelrequest.querystring

解决方案


尝试以下操作:

由于您在方法中使用了对$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());
}

推荐阅读