我有两个字段。 author_id
和teacher_id
。我想要一个或另一个,但如果两个都被填满,它会显示一个错误,说“只能有一个”。
是否可以使用Laravel中的验证规则执行此操作?我不懂文档。也许一个例子会更有意义(和解释)
答案 0 :(得分:1)
您应该使用required_without:foo,bar,...
查看here
示例强>
'author_id' => 'required_without:teacher_id',
'teacher_id' => 'required_without:author_id',
答案 1 :(得分:0)
有时最好在验证挂钩后使用自定义,例如:
/**
* @return \Illuminate\Validation\Validator
*/
public function validator(): \Illuminate\Validation\Validator
{
$validator = Validator::make($this->all(), [
'file' => 'required_without:url|file',
'url' => 'required_without:file|url'
]);
if ($this->has('url') && $this->has('file')) {
$validator->after(function (\Illuminate\Validation\Validator $validator) {
$validator->errors()->add('url', 'error message');
});
}
return $validator;
}
答案 2 :(得分:0)
这里提到了两种进行条件验证的不同方法 例如如果 deviceType 是“ android”
,则需要登录功能 fcmToken公共功能登录(请求$ request){
//如果deviceType存在并且是android,则需要验证fcmTokenif($ request-> has('deviceType')&& $ request ['deviceType'] ==“ android”) {
$ request-> validate([ 'fcmToken'=>'必填',
);
} }
使用Illuminate \ Foundation \ Http \ FormRequest;
LoginRequest类扩展FormRequest { 公共功能authorize() { 返回true; }public function rules() { return [ 'email' => 'required|string', 'password' => 'required', 'fcmToken' => 'string', 'deviceType' => 'required|string' ]; } }