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.