我想使用laravel 5验证我的表单字段。
表单字段1 - >用户名:
表格字段2 - >其他名称:
任何一个表单字段都是必需的。
我的意思是,如果存在用户ID,则其他名称应为空,如果存在其他名称,则user_id
应为空。
我正在尝试使用:
$validator = Validator::make(
[
'user_id ' => $user_id,
'user_name' => $user_name
], [
'user_id' => 'required_without:user_name',
'user_name' => 'required_without:user_id'
]);
if ($validator->fails()) {
return Utility::validation_err($validator);
}
在更新记录时,即使用户ID存在,它也会给我错误,当其他名称不存在时,需要用户ID。如果我填写它同时接受两者。它应该接受这两个领域中的一个。
任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用自己的验证规则,例如“only_one_id_name_required”。它应该应用于这两个领域。接下来在App \ Providers \ AppServiceProvider中放置Validator
Validator::extendImplicit('only_one_id_name_required', function($attribute, $value, $parameters, $validator) {
return (request()->has('user_id') xor request()->has('user_name'));
});
使用extendImplicit()而不是extend()来覆盖空字段请求。