在 laravel Validation rules 不够用时你就需要进行自定义
validation rule
。
Validator::extend()
最直接的是通过 Validation::extend()
来创建自定义验证规则,你可以在 app/routes.php
或控制器来写:
1 | Validator::extend('foo', function($attribute, $value, $parameters) |
$attribute
为要验证的属性名称,$value
为属性的值,$parameters
为传递到规则的参数数组。
以下是一个验证是否唯一的自定义验证规则:
1 | Validator::extend('isUniqueIn', function ($attribute, $value, $parameters) { |
Usage
1 | $rules = array( |
接受两个参数,第一为表名,第二为列名。
Illuminate\Validation\Validator
通过扩展 Illuminate\Validation\Validator
增加全局验证方法。
在 app/validators
创建 customValidator.php
,官方模板:
1 | class CustomValidator extends Illuminate\Validation\Validator { |
我的:
1 | // app/validators/customValidation.php |
然后拓展自定义验证器在 app/start/global.php
:
1 | Validator::resolver(function($translator, $data, $rules, $messages) |