我有电子邮件和密码字段,仅在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。值是正确的,但验证无效。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
我们正在检查两个互不依赖的字段,这意味着如果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
则需要检查密码,否则我们不需要验证它。
在模型中,您可以执行此操作。
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;
}
答案 1 :(得分:0)
好的。知道了。
我添加了一个可为空的验证属性,现在它可以工作了。
return [
'add_user' => ['required'],
'password' => ['required_if:add_user,1', 'min:8', 'nullable'],
'email' => ['required_if:add_user,1', 'email', 'max:255', 'nullable'],
];
希望有一天能对某人有所帮助。