我正在 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
});
如果有人能帮我解决这个问题,那就太好了。谢谢!
最佳答案
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',
));
Unless you know what you are doing should you inline validation rules.
为此,您可以解析
Validator
应用服务容器中的单例,由 ValidationServiceProvider 在那里注册.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)
Validator::validateEmail($attribute, $value)
Validator::validateMin($attribute, $value, $parameters)
关于php - Laravel - 在自定义验证中使用验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444292/