larave对路由参数进行表单验证

阅读更多
laravel当中,如果使用表单验证有好几种方法。

其中一种方法是写一个单独的表单验证类
方法是
php artisan make:request StoreBlogPost
然后此命令会新生成的类保存在 app/Http/Requests 目录下。

今天发现的问题是,
该类里面的rules() 方法,只能验证请求对象get或post之类的参数,而不能验证路由参数。
这就很尴尬了。没找到方法,只能用如下丑陋的代码解决。

首先在正常的控制里加一个构造方法:
类似

路由类似
Route::any( '/share_report/{param1}/{param2}', 'OrderController@share_report' );


控制器类 OrderController.php

public function __construct()
{
        $this->middleware(function ($request, $next) {
            $request->offsetSet('param1', $request->route( 'param1' ));
            $request->offsetSet('parem2', $request->route( 'param2' ));
            return $next($request);
        })->only('share_report'); // 只对这个特定方法share_report 使用中间件闭包
        // 把路由参数注入到请求对象的请求参数里。
}

public function share_report( string $param1, string $parem2,
                                  StoreBlogPost $request )
{

      // 这里面是正常的业务逻辑。
}


表单验证类 StoreBlogPost

public function rules()
{
    return [
            'param1' => 'required|min:4',
            'param2'    => 'required',
     ]

}

你可能感兴趣的:(laravel,路由参数,表单验证)