在 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) |