在使用 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',
]);