laravel 5.4 自定义表单验证

来源:互联网 发布:网站美工设计教程 编辑:程序博客网 时间:2024/05/29 17:43

1:背景

2:用法

Laravel 提供了许多有用的验证规则。但你可能想自定义一些规则。注册自定义验证规则的方法之一,就是使用 Validator Facade 中的 extend 方法,让我们在 服务提供者 中使用这个方法来注册自定义的验证规则:

<?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;use Illuminate\Support\Facades\Validator;class AppServiceProvider extends ServiceProvider{    /**     * 启动任意应用程序服务。     *     * @return void     */    public function boot()    {        Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {            return $value == 'foo';        });    }    /**     * 注册服务容器。     *     * @return void     */    public function register()    {        //    }}

自定义的验证闭包接收四个参数:要被验证的属性名称 attribute,属性的值value,传入验证规则的参数数组 $parameters,及 Validator 实例。

3:说明:上面只是说了有这个东西,具体怎么使用,还是没有明说。下面给出例子

4:例:

①新建控制器(控制器中的规则和,boot中的‘foo’一样)

②在 App\Providers\AppServiceProvider 的boot方法中加上那一段话(实际上可以添加任意逻辑)

③在resources\lang\zh-CN\validation.php 文件的 return数组中,按照其格式,添加任意提示信息(注意,键名和boot方法中

Validator::extend('foo', function ($attribute, $value, $parameters, $validator) { return $value == 'foo'; }); ‘foo’位置的字段一样)

5:示例

新建控制器方法public function dd(Request $request)    {        $inputs = $request->all();        $rule = array(             'title' => 'required|foo',        );        $validate = Validator::make($inputs, $rule);        if ($validate->fails())        {            $errors = $validate->errors()->all();            return $this->genResponse(0, $errors);        }    }
在resources\lang\zh-CN\validation.php'foo' => "这是自定义规则",
在App\Providers\AppServiceProvider创建boot方法 public function boot()    {        Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {            return $value == 'foo';        });    }
原创粉丝点击