我有自定义验证器。
Validator::extend('custom_validator', function($attribute, $value, $parameters, $validator) {
return $value === '1';
});
然后我如何验证
$v = Validator::make(['test' => 'a'], ['test' => 'custom_validator']);
$v->errors()->all(); // returns [
"validation.custom_validator",
]
但是当我传递只包含空格的字符串时
$v = Validator::make(['test' => ' '], ['test' => 'custom_validator']);
$v->errors()->all(); // returns [], so validator passed what is wrong
那么为什么验证器不会为此字符串运行我的自定义验证函数?
答案 0 :(得分:0)
Validator::extendImplicit('custom_validator', function($attribute, $value, $parameters, $validator) {
if($value === null) return true; // this line checks for 'empty' strings
return $value === '1';
});
我必须使用extendImplicit
而不是extend
方法,因为extendImplicit
验证所有字符串,但extend
不验证空字符串(因为内部laravel运行{{1}输入数据的函数,如果string为空,则根本不执行验证器!)