首页 > 解决方案 > 如何将所有 \Illuminate\Http\Request $request 数据设置为 FormRequest 对象以在 LARAVEL 中的控制器中使用

问题描述

我创建了用于数据验证的表单请求,我还创建了用于请求修改的中间件,该中间件通过\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 控制器中访问

标签: laravelformsmiddleware

解决方案


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

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

然后你可以使用它访问它

$request->get('with');

推荐阅读