php – Laravel验证或
作者:互联网
我有一些验证需要一个url或路由,但不是两个.
$this->validate($request, [
'name' => 'required|max:255',
'url' => 'required_without_all:route|url',
'route' => 'required_without_all:url|route',
'parent_items'=> 'sometimes|required|integer'
]);
我尝试过使用required_without和required_without_all,但是他们都通过了验证,我不知道为什么.
route是route字段中的规则
解决方法:
我认为最简单的方法是创建自己的验证规则.它可能看起来像.
Validator::extend('empty_if', function($attribute, $value, $parameters, Illuminate\Validation\Validator $validator) {
$fields = $validator->getData(); //data passed to your validator
foreach($parameters as $param) {
$excludeValue = array_get($fields, $param, false);
if($excludeValue) { //if exclude value is present validation not passed
return false;
}
}
return true;
});
并使用它
$this->validate($request, [
'name' => 'required|max:255',
'url' => 'empty_if:route|url',
'route' => 'empty_if:url|route',
'parent_items'=> 'sometimes|required|integer'
]);
附:不要忘记在您的提供商处注册.
编辑
添加自定义消息
1)添加消息
2)添加替换剂
Validator::replacer('empty_if', function($message, $attribute, $rule, $parameters){
$replace = [$attribute, $parameters[0]];
//message is: The field :attribute cannot be filled if :other is also filled
return str_replace([':attribute', ':other'], $replace, $message);
});
标签:php,laravel,laravel-5,laravel-5-1,laravel-validation 来源: https://codeday.me/bug/20190717/1488461.html