在使用 Laravel 表单验证功能时,有时我们想实现当表单的 input 有值时才进行验证,否则忽略表单验证条件,比如下面的需求:
$this->validate($request, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'min:6',
]);
上面的 password 验证规则,要求密码至少要6位以上,在创建用户的时候,符合需求。而在更新用户信息时,我们一般设置如果 password 为空代表不修改密码,但是如果 password 为空,仍然会执行密码至少为6位的验证,导致表单验证失败,无法提交。
解决方法是使用 nullable 规则,表示验证字段可以为 null ,如果不是 null 那么就执行后续的验证规则。
$this->validate($request, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'nullable|min:6',
]);