Bonjour, je suis entrain de faire les validation pour un formulaire d'inscription, j'ai vérifier que tout les champ n'etait pas vide et que l'email etait bien au bon format. Hors je ne c'est pas comment faire pour verifier que cette email n'est pas deja utiliser.
J'ai vue que dans la version 2 de CakePHP il y avait "isUnique" que l'on pouvait mettre dans la methode add du Validator, mais apparament ca n'existe plus sur CakePHP3 et je n'est pas trop comprit leur nouveau système
Voici mon code:
public function validationDefault(Validator $validator) {
$validator->notEmpty('nom')
->notEmpty('prenom')
->notEmpty('email')
->add('email', [
'email' => [
'rule' => 'email',
'message' => 'Vous devez entrer une adresse mail valide'
],
])
->notEmpty('password');
return $validator;
}
Bonjour.
J'ai vue que dans la version 2 de CakePHP il y avait "isUnique" que l'on pouvait mettre dans la methode add du Validator, mais apparament ca n'existe plus sur CakePHP3
Nous n'avons pas dû lire la même documentation alors : Créer des Règles de Champ Unique.
Si j'ai bien comprit la variable $rules est une instance de RulesChecker qui est utiliser dans la fonction buildRules() du model.
Moi je n'ai pas utiliser la fonction buildRules() mais la fonction validationDefault(). Y a t-il moyen de faire la meme chose avec l'instance de Validator ?
Ou faut-il que je passe toute mes verification dans la fonction buildRules() et que je supprime ma fonction validationDefault() ?
Tu n'as pas besoin de créer de fonction buildRules, car tu fais appel à une classe de règle qui existe dans l'ORM.
C'est pourtant précisé dans la documentation :
Comme les règles uniques sont couramment utilisées, CakePHP inclut une classe de Règle simple qui vous permet de facilement définir des ensembles de champ unique
Lorsque tu veux utiliser la règle isUnique
, tu ajoutes dans le modèle concerné :
use Cake\ORM\Rule\IsUnique;
Puis tu l'utilises :
// Un champ unique.
$rules->add($rules->isUnique(['email']));
// Une liste de champs
$rules->add($rules->isUnique(['username', 'account_id']));
Tu peux modifier par :
$validator->notEmpty('nom')
->notEmpty('prenom')
->notEmpty('email')
->add('email', [
'email' => [
'rule' => 'email',
'message' => 'Vous devez entrer une adresse mail valide'
]
])->isUnique(['email'])
->notEmpty('password');
Je ne comprends pas ce qu'il y a de compliqué à comprendre, ils sont assez explicite dans la documentation pour renseigner son utilisation.