Bonjour,
C'est normal. Le processus est ainsi:
1 vérification des données (champs requis, regex, etc)
2 ajout de l'utilisateur dans joomla
3 ajout de l'utilisateur dans hikashop_user
4 ajout de l'adresse dans hikashop_address
5 envoi d'email si nécessaire
L'index unique va bloquer au niveau de l'étape 3, et donc l'étape 2 sera déjà passée.
Pour ce que vous voulez faire il y a deux possibilités:
1. Vous créez un plugin du groupe "hikashop" et implémentez l'API "fields" pour créer un nouveau type de champ personnalisé:
www.hikashop.com/support/documentation/6...entation.html#fields
Vous faites étendre votre champ du type texte et surchargez juste la fonction check pour faire la vérification de l'unicité à cet endroit.
Ensuite, il suffit de changer le type de votre champ pour le type de votre plugin et du coup votre plugin pourra stopper l'enregistrement directement à l'étape 1.
Un exemple d'un plugin de ce genre est dans le dossier plugins/hikashop/datepickerfield qui rajoute le type 'advanced date picker' dans HikaShop.
2. Vous pouvez également développer un plugin du groupe "hikashop" et juste implémenter l'évènement onBeforeHikaUserRegistration(&$data, $input_data, $mode)
Cet évènement est déclencher entre l'étape 1 et l'étape 2.
Dans
(où xxx est le nom de colonne de votre champ) vous aurez la valeur entrée par l'utilisateur dans votre champ.
Et si cela ne va pas, vous pouvez alors changez
à false pour annuler l'enregistrement et mettre votre message d'erreur dans l'array
Le plugin recaptcha disponible sur notre site utilise justement cet évènement pour vérifier le captcha avant l'enregistrement donc c'est un bon exemple.
Je pense que la solution numéro 2 est la plus facile à mettre en place, mais cela demande quand même de savoir coder en PHP.