Laravel 验证必须填写两个字段之一
Laravel Validation one of two fields must be filled
我有两个字段:
QQ
电子邮件
如何设置验证器对象以便必须填写其中一个字段?无所谓。
$messages = array(
'email.required_without:qq' => Lang::get('messages.mustenteremail'),
'email.email' => Lang::get('messages.emailinvalid'),
'qq.required_without:email' => Lang::get('messages.mustenterqq'),
);
required_without
应该可以。
这意味着如果其他字段不存在,则该字段是必需的。如果有两个以上的字段并且只需要一个,请使用 required_without_all:foo,bar,...
$rules = array(
'Email' => 'required_without:QQ',
'QQ' => 'required_without:Email',
);
在上面的例子中(由 lucasgeiter 给出)你实际上只需要一个条件而不是两个。
$rules = array(
'Email' => 'required_without:QQ'
);
如果您有两个规则,那么不填写任何一个都会导致显示两条错误消息。这样它将检查是否至少有一个字段已填写,如果两者均未填写,则只会显示一条错误消息。
Laravel >= 8.32 只支持.
两者(手机或电子邮件)同时显示 -> 通过错误。
两者(手机或电子邮件)未同时存在 -> 通过错误。
允许
只能允许一个参数。
'email' => [ 'prohibited_unless:mobile,null,','required_without:mobile','email', 'max:255', ],
'mobile' => [ 'prohibited_unless:email,null','required_without:email', 'digits_between:5,13', 'numeric' ],
我有两个字段:
电子邮件
如何设置验证器对象以便必须填写其中一个字段?无所谓。
$messages = array(
'email.required_without:qq' => Lang::get('messages.mustenteremail'),
'email.email' => Lang::get('messages.emailinvalid'),
'qq.required_without:email' => Lang::get('messages.mustenterqq'),
);
required_without
应该可以。
这意味着如果其他字段不存在,则该字段是必需的。如果有两个以上的字段并且只需要一个,请使用 required_without_all:foo,bar,...
$rules = array(
'Email' => 'required_without:QQ',
'QQ' => 'required_without:Email',
);
在上面的例子中(由 lucasgeiter 给出)你实际上只需要一个条件而不是两个。
$rules = array(
'Email' => 'required_without:QQ'
);
如果您有两个规则,那么不填写任何一个都会导致显示两条错误消息。这样它将检查是否至少有一个字段已填写,如果两者均未填写,则只会显示一条错误消息。
Laravel >= 8.32 只支持.
两者(手机或电子邮件)同时显示 -> 通过错误。
两者(手机或电子邮件)未同时存在 -> 通过错误。
允许
只能允许一个参数。
'email' => [ 'prohibited_unless:mobile,null,','required_without:mobile','email', 'max:255', ],
'mobile' => [ 'prohibited_unless:email,null','required_without:email', 'digits_between:5,13', 'numeric' ],