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)
        ]);
        ....
    }

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

阅读 2.5k
1 个回答

不是很清楚你为什么觉得定义多个表单请求类觉得有些浪费(关于TP场景这样的扩展包也没有听说过)
我认为你完全可以创建多个FormRequest类,不必让一个表单请求类承担多个请求的验证职责,这样从可读性上看起来也清晰一点
例如:
Http\Requests\Article\StoreArticleRequest.php -- 创建文章的表单请求类
Http\Requests\Article\UpdateArticleRequest.php -- 更新文章内容
Http\Requests\User\UpdateUserInfoRequest.php -- 更新用户信息

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题