Bonjour,
Je vous explique la situation : j'ai un formulaire d'inscription qui enregistre les informations recupérées dans une table "Candidatures" mais pour la validation j'ai besoin de savoir si un des membres (enregistré eux dans la table "Users") n'a pas déjà l'adresse email que le candidat à saisit...
J'ai essayer de mettre ça :
$this->table('users');
dans la méthode validationDefault mais le problème c'est que les données postées par le formulaires d'inscription sont quand même enregistrées dans la table "Users" et non pas la table "Candidatures"...
J'ai essayer de chercher un truc du style afterValidate mais je n'ai pas trouvé ^^
Si quequl'un à une solution :)
Tu ajoutes Custom Rule(voir la documentation officielle) .
CakePhp3:
$validator->add('fieldname', $this->_memberEmailExists());
Dans le fichier CandidaturesTable.php,
tu définie la méthode _memberEmailExists();
public function _memberEmailExists(){
return [
'_memberEmailExists' => [
'rule' => function ($value, $context){
// fais un debug de $context tu trouves les données
// crée votre condition exemple:
$conditions = ['Users.mail' => $context[$data['mail']]];
// si la table members/users est lié avec la table candidature
$result = $this->members/users->exists($conditions);
// sinon
$result = \Cake\ORM\TableRegistry::get('Members/Users')->exists($conditions);
return ($result) ? false : true;
},
'message' => "E-Mail existe déjà"
]
];
}