我有电子邮件和密码字段,只有当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;
}