Laravel 8 隐式扩展
默认情况下,当要验证的属性不存在或者包含一个空字符串时,包含自定义扩展的校验规则是不会执行的。例如, unique
规则不会校验空字符串:
$rules = ['name' => 'unique:users,name'];
$input = ['name' => ''];
Validator::make($input, $rules)->passes(); // true
如果想要实现即使属性为空,规则也要校验,那么就需要暗示该属性是必须的。要创建这样的 「隐式」扩展,请使用 Validator::extendImplicit()
方法:
Validator::extendImplicit('foo', function ($attribute, $value, $parameters, $validator) {
return $value == 'foo';
});
注意:「隐式」扩展仅仅暗示该属性是必须的。至于它到底是确实还是空值,这取决于你。