如何在LARAVEL中将所有\ Illuminate \ Http \ Request $ request数据设置为FormRequest对象以在控制器中使用

时间:2019-06-20 10:44:34

标签: laravel forms middleware

我创建了用于数据验证的表单请求, 我还创建了用于请求修改的中间件,该中间件通过从查询参数中获取值来在\Illuminate\Http\Request对象中添加一个键

我希望由中间件修改的\Illuminate\Http\Request对象数据与表单请求一起附加,以便我可以使用$ request对象进一步控制用户

我已将中间件代码编写到baseformrequest(custom class),并将该方法调用到我的formrequest中。

中间件代码:

public function handle($request, Closure $next)
    {
        $requested_method = $request->route()->getActionMethod();
        $required_with = [];
        if($requested_method == 'show'){
            if (!is_null($request->get('_with'))) {
                $required_with = explode(',', $request->get('_with'));
            }
        }

        $request->with = $request->get('_with');
        return $next($request);
    }

我希望所有修改后的请求对象都可以在我的表单请求对象中访问,但是我无法在Laravel控制器中访问

1 个答案:

答案 0 :(得分:1)

您可以像这样向请求对象添加自定义属性

$request->attributes->add(['with' => $required_with])

然后您可以使用

进行访问
$request->get('with');