如果不起作用,则需要进行Laravel验证



我有电子邮件和密码字段,只有当add_user字段值为1时,我才希望它们是必需的。这是我的验证:

public function rules() {
return [
'add_user' => ['required'],
'password' => ['required_if:add_user,1', 'min:8'],
'email' => ['required_if:add_user,1', 'email', 'max:255'],
];
}

这个不起作用,即使值为0,它也总是出错。我使用jquery填写add_user值。我有一个下拉列表,如果用户从选项中单击,则add_user值为0,但如果通过输入,则值为1。值是正确的,但验证不起作用。有人能帮我弄清楚吗?

好的。明白了。

我添加了一个可以为null的验证属性,现在它可以工作了。

return [
'add_user' => ['required'],
'password' => ['required_if:add_user,1', 'min:8', 'nullable'],
'email' => ['required_if:add_user,1', 'email', 'max:255', 'nullable'],
];

希望有一天这能帮助到别人。

我们正在检查两个相互不依赖的字段,这意味着如果user_id!=1,密码和电子邮件将有一些其他验证,因此我们需要通过这种方式进行检查

$rules = [
'type' => 'required'
];
$v = Validator::make(Input::all(),$rules);
$v->sometimes('password', 'required|min:8', function($input) {
return $input->type == '1';
});

在这里,我们做了一个Validator的例子,如果user_id ==1,我们需要检查密码,否则我们不需要验证它

在Model中,您可以执行此操作。

public function rules(){
return [
'user_id '     => 'required'
];
}
protected function getValidatorInstance() {
$validator = parent::getValidatorInstance();
$validator->sometimes('password', 'required|min:8', 
function($input) {
return $input->user_id== 1;
});
return $validator;
}

最新更新