web-dev-qa-db-fra.com

Laravel Validation du mot de passe et du mot de passe_confirmation

Je l'utilise pour modifier les informations du compte d'utilisateur:

$this->validate($request, [
    'password' => 'min:6',
    'password_confirmation' => 'required_with:password|same:password|min:6'
]);

Cela a bien fonctionné dans une application Laravel 5.2, mais ne fonctionne pas dans une application 5.4.

image

Qu'est-ce qui ne va pas ici ou quelle est la bonne façon de ne rendre obligatoire la password que si le champ password ou password_confirmation est défini?

32
Scarwolf

Vous pouvez utiliser la règle de validation confirmé .

$this->validate($request, [
    'name' => 'required|min:3|max:50',
    'email' => 'email',
    'vat_number' => 'max:13',
    'password' => 'required|confirmed|min:6',
]);
64
Neabfi

Essayez de le faire de cette façon, cela a fonctionné pour moi:

$this->validate($request, [
'name' => 'required|min:3|max:50',
'email' => 'email',
'vat_number' => 'max:13',
'password' => 'min:6|required_with:password_confirmation|same:password_confirmation',
'password_confirmation' => 'min:6'
]);`

On dirait que la règle a toujours la validation sur la première entrée de la paire ...

26
omeati

essayez confirmée et sans la règle password_confirmation:

$this->validate($request, [
        'name' => 'required|min:3|max:50',
        'email' => 'email',
        'vat_number' => 'max:13',
        'password' => 'confirmed|min:6',
    ]);
7
dparoli

Essaye ça:

'password' => 'required|min:6|confirmed',
'password_confirmation' => 'required|min:6'
3
Odin Thunder

Il devrait suffire de faire:

$this->validate($request, [
    'password' => 'nullable,min:6,confirmed',
]);

Rendez le mot de passe facultatif, mais nécessite, si présent, une confirmation du mot de passe correspondant

0
Luca C.