laravel 自定义验证器类加入场景

从thinkphp转入laravel 开阔了很多的思路,不得不说laravel真是一款很好的产品,尤其是在php项目代码标准和规范方面.
但是thinkphp也有一些很好的地方,例如验证场景,有时候业务不同验证的字段有部分差别,例如,用户注册时密码字段是必须填写,但是在用户资料修改时密码是可选的.重定义一个验证器有些浪费, 用场景就可以很好的解决这些问题.

在laravel中 做验证我一般是这样的

1.生成表单请求类

php artisan make:request StoreBlogPost

2.StoreBlogPost.php 编写验证规则

` public function rules()

{    return [        'name'=>'required',        'email'=>'required|unique:users',        'password'=>'required|confirmed'
    ];
}public function message(){

.....
}

`

3.控制器中验证

    public function store(StoreBlogPost $request)
    {
        $user=User::create([           'name'=>$request->input('name'),           'email'=>$request->input('email'),           'password'=>bcrypt($request->password)
        ]);
        ....
    }

如何在验证器中加入验证场景,有成熟的扩展包也行.
请各位大神提供一下建议,谢谢


素胚勾勒不出你
浏览 1852回答 2
2回答

慕慕森

不是很清楚你为什么觉得定义多个表单请求类觉得有些浪费(关于TP场景这样的扩展包也没有听说过)我认为你完全可以创建多个FormRequest类,不必让一个表单请求类承担多个请求的验证职责,这样从可读性上看起来也清晰一点

喵喔喔

例如:Http\Requests\Article\StoreArticleRequest.php -- 创建文章的表单请求类Http\Requests\Article\UpdateArticleRequest.php -- 更新文章内容Http\Requests\User\UpdateUserInfoRequest.php -- 更新用户信息
打开App,查看更多内容
随时随地看视频慕课网APP