web-dev-qa-db-fra.com

Laravel case à cocher de validation

J'utilise la fonction d'enregistrement laravel pour enregistrer un utilisateur. J'ai ajouté une case à cocher dans laquelle l'utilisateur doit accepter les termes et conditions. Je souhaite que l'utilisateur s'inscrive uniquement lorsque la case est cochée. Peut J'utilise la validation 'obligatoire' dans laravel? Voici ma fonction de validation:

 return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'checkbox' =>'required',
    ]);

Lorsque j'utilise la fonction comme celle-ci, laravel donne l'erreur requise pour la case à cocher même si elle est cochée.

Ceci est le html de la case à cocher

<input type="checkbox" name="checkbox" id="option" value="{{old('option')}}"><label for="option"><span></span> <p>Ik ga akkoord met de <a href="#">algemene voorwaarden</a></p></label>

J'espère que vous pouvez m'aider!

17
Sander Van Keer

Cela fonctionnera, assurez-vous simplement que la valeur d'entrée ne sera pas une chaîne vide ou fausse. Et 'checkbox' => 'required' est ok tant que la clé est la valeur de l'attribut de nom d'entrée.

8
Calin Blaga

Utilisez la règle accepted .

Le champ en cours de validation doit être oui, activé, 1 ou vrai. Ceci est utile pour valider l'acceptation des "Conditions d'utilisation".

Échantillon pour votre cas:

 return Validator::make($data, [
    'firstName' => 'required|max:255',
    'lastName' => 'required|max:255',
    'email' => 'required|email|max:255|unique:users',
    'password' => 'required|confirmed|min:6',
    'checkbox' =>'accepted'
]);
42
SnakeDrak

Je viens d'avoir une grande frustration, car le code que j'utilise renvoie la valeur de la case à cocher comme une valeur booléenne.

Si vous avez une situation similaire, vous pouvez utiliser la règle suivante:

[
 'checkbox_field' => 'required|in:1',
]
4
Tschallacka

Utilisez required_without_all pour la case à cocher:

return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'checkbox' =>'required_without_all',
    ]);

Voir: https://laravel.com/docs/5.1/validation#available-validation-rules

2
Yasin Patel

Vos règles de validation doivent être corrélées avec les attributs name de vos champs de formulaire html:

 return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'option' =>'required', //not checkbox
    ]);
1
Steve