如果Laravel中的值不为null,如何验证输入字段

nou*_*cep 10 php laravel laravel-validation laravel-5.4

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

这是为创建用户添加的验证.有用.

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

更新时,不需要密码字段.但是如果密码字段不为空,则验证min:6并确认规则.试过sometimes......但没有工作..

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

Rej*_*eri 25

尝试使用nullable作为规则

'password' => 'nullable|min:6|confirmed',
Run Code Online (Sandbox Code Playgroud)

请参阅https://laravel.com/docs/5.4/validation#a-note-on-optional-fields


小智 10

如果列可以为空

'password' => 'nullable|min:6|confirmed',
Run Code Online (Sandbox Code Playgroud)

@Rejinderi 的答案是正确的!

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

'password' => 'sometimes|required|min:6|confirmed',
Run Code Online (Sandbox Code Playgroud)

结果

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

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

username = 'admin' // pass- validate only exist
Run Code Online (Sandbox Code Playgroud)