如何在 Laravel 中的值不为空时验证输入字段

我正在尝试使用 laravel 5.4 创建和更新用户

这是为创建用户添加的验证。它的工作原理。

$this->validate($request, [
    'name' => 'required|max:255',
    'email' => 'required|email|max:255|unique:users',
    'password' => 'required|min:6|confirmed',
]);

更新时,密码字段不是必需的。但是,如果密码字段不为空,请验证 min:6 和确认规则。已尝试使用 ..但不能工作..sometimes

$this->validate($request, [
    'name' => 'required|max:255',
    'email' => 'required|email|max:255|unique:users,email,'.$id,
    'password' => 'sometimes|min:6|confirmed',
]);

答案 1

尝试使用可为 null 作为规则

'password' => 'nullable|min:6|confirmed',

查看 https://laravel.com/docs/5.8/validation#a-note-on-optional-fields


答案 2

如果列为空

'password' => 'nullable|min:6|confirmed',

@Rejinderi的答案是正确的!

如果列不可为空(这可能有助于其他)

'password' => 'sometimes|required|min:6|confirmed',

结果

username = 'admin',
password = null // fail- required

username = 'admin',
password = 123 // fail- min:6

username = 'admin' // pass- validate only exist

推荐