我正在Laravel 4上编写自定义验证规则。但是,我期待在其中使用现有的验证规则(例如:exists,email,min等)。我不知道如何做到这一点,我猜测使用Validator :: make并不是真正的正确方法。我的代码如下:
Validator::extend('check_fulfilled',function($attribute,$value,$parameters){
$movieidfield = Input::get('movieid');
if( empty($movieidfield ) ) return false;
// Here I would like to test $movieidfield
//with exists and min validation rules
});
如果有人可以帮助我,那将是非常好的。谢谢!
答案 0 :(得分:0)
Validation rules are composable。
像您这样的自定义验证规则不需要从Input参数包中获取值。 Validator
class already takes care of that。
Validator::extend('check_fulfilled', function($attribute, $value, $parameters) {
return !empty($value);
});
例如,要将您的自定义验证规则与其他现有规则一起使用,可以在实例化Validator
实例时编写:
$v = Validator::make($data, array(
'movieid' => 'check_fulfilled|email',
));
除非您内联验证规则,否则您不知道自己在做什么。
要实现这一点,您可以解决ValidationServiceProvider在其中注册的应用服务容器中的Validator
单例。
Validator::extend('check_fulfilled', function($attribute, $value, $parameters) {
if (empty($movieidfield)) return false;
$v = App::make('validator');
return $v->validateExists($attribute, $value, $parameters)
&& $v->validateEmail($attribute, $value);
});
请注意,$parameters
数组将需要保存内联验证规则的值。
请参阅验证方法的签名,以了解要传递的参数。
Validator::validateExists($attribute, $value, $parameters)