[Skip to main content](#vessel-content)

#   champs personnalisés et clé unique

##

- **[must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")**
- [![must&#95;de&#95;cartier's Avatar](https://www.hikashop.com/media/kunena/core/svg/person.svg)](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile") Topic Author
- [ Offline](/forum/user/35751-must-de-cartier)

Less More

- Posts: 68
- Thank you received: 0
-
-

4 years 6 months ago [\#341055](#341055) by [must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")  *[champs personnalisés et clé unique](/forum/5-support-en-francais-french-support-/904295-champs-personnalises-et-cle-unique#341055 "Bonjour  J'ai mis en place un champ personnalisé de numéro d'adhérent. Celui-ci est unique. J'ai modifié la table hikashop&#95;user pour mettre sur la colonne un index unique. Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ? Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.  Merci pour votre aide.")* was created by *[must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")*

Bonjour

J'ai mis en place un champ personnalisé de numéro d'adhérent.
Celui-ci est unique.
J'ai modifié la table hikashop_user pour mettre sur la colonne un index unique.
Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ?
Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.

Merci pour votre aide.

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA0Mjk1LWNoYW1wcy1wZXJzb25uYWxpc2VzLWV0LWNsZS11bmlxdWU/dG1wbD1tYXJrZG93bg==) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[nicolas](/forum/user/63-nicolas "View nicolas's Profile")**
- [![nicolas's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar63.png)](/forum/user/63-nicolas "View nicolas's Profile")
- [ Offline](/forum/user/63-nicolas)

Less More

- Posts: 86290
- Thank you received: 14268
-
-

4 years 6 months ago [\#341058](#341058) by [nicolas](/forum/user/63-nicolas "View nicolas's Profile")  Replied by *[nicolas](/forum/user/63-nicolas "View nicolas's Profile")* on topic *[champs personnalisés et clé unique](/forum/5-support-en-francais-french-support-/904295-champs-personnalises-et-cle-unique#341058 "Bonjour  J'ai mis en place un champ personnalisé de numéro d'adhérent. Celui-ci est unique. J'ai modifié la table hikashop&#95;user pour mettre sur la colonne un index unique. Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ? Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.  Merci pour votre aide.")*

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](https://www.hikashop.com/support/documentation/62-hikashop-developer-documentation.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(&amp;$data, $input_data, $mode)
Cet évènement est déclencher entre l'étape 1 et l'étape 2.
Dans Code:

$data['userData']['xxx']

(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 Code:

$data['status']

à false pour annuler l'enregistrement et mettre votre message d'erreur dans l'array Code:

$data['messages']

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.

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA0Mjk1LWNoYW1wcy1wZXJzb25uYWxpc2VzLWV0LWNsZS11bmlxdWU/dG1wbD1tYXJrZG93bg==) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")**
- [![must&#95;de&#95;cartier's Avatar](https://www.hikashop.com/media/kunena/core/svg/person.svg)](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile") Topic Author
- [ Offline](/forum/user/35751-must-de-cartier)

Less More

- Posts: 68
- Thank you received: 0
-
-

4 years 5 months ago [\#341474](#341474) by [must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")  Replied by *[must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")* on topic *[champs personnalisés et clé unique](/forum/5-support-en-francais-french-support-/904295-champs-personnalises-et-cle-unique#341474 "Bonjour  J'ai mis en place un champ personnalisé de numéro d'adhérent. Celui-ci est unique. J'ai modifié la table hikashop&#95;user pour mettre sur la colonne un index unique. Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ? Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.  Merci pour votre aide.")*

Bonjour Nicolas

Je pense que c'est une bêtise qui saute aux yeux mais je n'arrive pas à mettre en place la 2nde méthode que vous avez indiqué.

Voici le code que j'utilise :
Code:

&lt;?php /** * @package HikaShop for Joomla! * @version 4.4.0 * @author hikashop.com * @copyright (C) 2010-2020 HIKARI SOFTWARE. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html */ defined('_JEXEC') or die('Restricted access'); ?&gt;&lt;?php class plgHikashop_matricule extends JPlugin { function onBeforeHikaUserRegistration(&amp;$data, $input_data, $mode) { $app = JFactory::getApplication(); if(version_compare(JVERSION,'4.0','&gt;=')) { if($app-&gt;isClient('administrator')) return true; } else { if($app-&gt;isAdmin()) return true; } $data['status'] = $this-&gt;checkMatricule(false); if(!$data['status']) $data['messages']['matricule'] = "Ce matricule existe déjà dans la base"; } function checkMatricule(&amp;$data){ $user = JFactory::getUser(); if ($user-&gt;guest) { return true; } // Get a db connection. $db = JFactory::getDbo(); // Create a new query object. $query = $db-&gt;getQuery(true); // Select all records from the user profile table where key begins with "custom.". // Order it by the ordering field. $query-&gt;select(array('user_matricule')); $query-&gt;from('#__hikashop_user'); // Reset the query using our newly populated query object. $db-&gt;setQuery($query); // Load the results as a list of stdClass objects (see later for more options on retrieving data). $results = $db-&gt;loadColumn(); if($data['user']['user_matricule'] === $results) { return false; }else { return true; } } }

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA0Mjk1LWNoYW1wcy1wZXJzb25uYWxpc2VzLWV0LWNsZS11bmlxdWU/dG1wbD1tYXJrZG93bg==) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[nicolas](/forum/user/63-nicolas "View nicolas's Profile")**
- [![nicolas's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar63.png)](/forum/user/63-nicolas "View nicolas's Profile")
- [ Offline](/forum/user/63-nicolas)

Less More

- Posts: 86290
- Thank you received: 14268
-
-

4 years 5 months ago [\#341476](#341476) by [nicolas](/forum/user/63-nicolas "View nicolas's Profile")  Replied by *[nicolas](/forum/user/63-nicolas "View nicolas's Profile")* on topic *[champs personnalisés et clé unique](/forum/5-support-en-francais-french-support-/904295-champs-personnalises-et-cle-unique#341476 "Bonjour  J'ai mis en place un champ personnalisé de numéro d'adhérent. Celui-ci est unique. J'ai modifié la table hikashop&#95;user pour mettre sur la colonne un index unique. Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ? Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.  Merci pour votre aide.")*

Bonjour,

Au début de la fonction checkMatricule vous vérifiez si l'utilisateur est connecté ou pas pour ne faire que le check si l'utilisateur est connecté.
Or, lors du déclenchement de l'évènement onBeforeHikaUserRegistration l'utilisateur n'a pas encore été enregistré et donc pas encore connecté non plus.
Du coup, la fonction checkMatricule retourne toujours true à cet endroit.

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA0Mjk1LWNoYW1wcy1wZXJzb25uYWxpc2VzLWV0LWNsZS11bmlxdWU/dG1wbD1tYXJrZG93bg==) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")**
- [![must&#95;de&#95;cartier's Avatar](https://www.hikashop.com/media/kunena/core/svg/person.svg)](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile") Topic Author
- [ Offline](/forum/user/35751-must-de-cartier)

Less More

- Posts: 68
- Thank you received: 0
-
-

4 years 5 months ago [\#341559](#341559) by [must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")  Replied by *[must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")* on topic *[champs personnalisés et clé unique](/forum/5-support-en-francais-french-support-/904295-champs-personnalises-et-cle-unique#341559 "Bonjour  J'ai mis en place un champ personnalisé de numéro d'adhérent. Celui-ci est unique. J'ai modifié la table hikashop&#95;user pour mettre sur la colonne un index unique. Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ? Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.  Merci pour votre aide.")*

Merci Nicolas.
Mais je ne comprends vraiment pas ce qui se passe, j'ai essayé de simplifier au maximum le code et ça ne fonctionne toujours pas. Auriez-vous encore l'amabilité de me dire pourquoi ?? Code:

&lt;?php /** * @package HikaShop for Joomla! * @version 4.4.0 * @author hikashop.com * @copyright (C) 2010-2020 HIKARI SOFTWARE. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html */ defined('_JEXEC') or die('Restricted access'); ?&gt;&lt;?php class plgSystemMatricule extends JPlugin { function onBeforeHikaUserRegistration(&amp;$data, $input_data, $mode) { $data['status'] = $this-&gt;checkMatricule(false); if(!$data['status']) $data['messages']['matricule'] = "stop"; } function checkMatricule(&amp;$data){ if($data['user']['user_matricule'] === "E5099999") { return false; }else{ return true; } } }

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA0Mjk1LWNoYW1wcy1wZXJzb25uYWxpc2VzLWV0LWNsZS11bmlxdWU/dG1wbD1tYXJrZG93bg==) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[nicolas](/forum/user/63-nicolas "View nicolas's Profile")**
- [![nicolas's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar63.png)](/forum/user/63-nicolas "View nicolas's Profile")
- [ Offline](/forum/user/63-nicolas)

Less More

- Posts: 86290
- Thank you received: 14268
-
-

4 years 5 months ago [\#341560](#341560) by [nicolas](/forum/user/63-nicolas "View nicolas's Profile")  Replied by *[nicolas](/forum/user/63-nicolas "View nicolas's Profile")* on topic *[champs personnalisés et clé unique](/forum/5-support-en-francais-french-support-/904295-champs-personnalises-et-cle-unique#341560 "Bonjour  J'ai mis en place un champ personnalisé de numéro d'adhérent. Celui-ci est unique. J'ai modifié la table hikashop&#95;user pour mettre sur la colonne un index unique. Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ? Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.  Merci pour votre aide.")*

Bonjour,

Vous avez deux problèmes:
- vous confondez $data et $input_data
- vous ne passez pas $input_data à la fonction check_matricule
Le deux problèmes sont corrigeable en changeant juste false par $input_data.
Le code devrait donc être: Code:

&lt;?php /** * @package HikaShop for Joomla! * @version 4.4.0 * @author hikashop.com * @copyright (C) 2010-2020 HIKARI SOFTWARE. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html */ defined('_JEXEC') or die('Restricted access'); ?&gt;&lt;?php class plgSystemMatricule extends JPlugin { function onBeforeHikaUserRegistration(&amp;$data, $input_data, $mode) { $data['status'] = $this-&gt;checkMatricule($input_data); if(!$data['status']) $data['messages']['matricule'] = "stop"; } function checkMatricule(&amp;$data){ if($data['user']['user_matricule'] === "E5099999") { return false; }else{ return true; } } }

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA0Mjk1LWNoYW1wcy1wZXJzb25uYWxpc2VzLWV0LWNsZS11bmlxdWU/dG1wbD1tYXJrZG93bg==) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")**
- [![must&#95;de&#95;cartier's Avatar](https://www.hikashop.com/media/kunena/core/svg/person.svg)](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile") Topic Author
- [ Offline](/forum/user/35751-must-de-cartier)

Less More

- Posts: 68
- Thank you received: 0
-
-

4 years 5 months ago [\#341568](#341568) by [must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")  Replied by *[must\_de\_cartier](/forum/user/35751-must-de-cartier "View must&#95;de&#95;cartier's Profile")* on topic *[champs personnalisés et clé unique](/forum/5-support-en-francais-french-support-/904295-champs-personnalises-et-cle-unique#341568 "Bonjour  J'ai mis en place un champ personnalisé de numéro d'adhérent. Celui-ci est unique. J'ai modifié la table hikashop&#95;user pour mettre sur la colonne un index unique. Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ? Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.  Merci pour votre aide.")*

Merci de votre implication Nicolas. Malheureusement le code que vous avait fourni ne marche pas non plus. Je m'en arrache les cheveux.
Vous voyez d'autres erreurs sur ce tout petit bout de code ?

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA0Mjk1LWNoYW1wcy1wZXJzb25uYWxpc2VzLWV0LWNsZS11bmlxdWU/dG1wbD1tYXJrZG93bg==) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

- **[nicolas](/forum/user/63-nicolas "View nicolas's Profile")**
- [![nicolas's Avatar](https://www.hikashop.com/media/kunena/avatars/resized/size144/users/avatar63.png)](/forum/user/63-nicolas "View nicolas's Profile")
- [ Offline](/forum/user/63-nicolas)

Less More

- Posts: 86290
- Thank you received: 14268
-
-

4 years 5 months ago [\#341569](#341569) by [nicolas](/forum/user/63-nicolas "View nicolas's Profile")  Replied by *[nicolas](/forum/user/63-nicolas "View nicolas's Profile")* on topic *[champs personnalisés et clé unique](/forum/5-support-en-francais-french-support-/904295-champs-personnalises-et-cle-unique#341569 "Bonjour  J'ai mis en place un champ personnalisé de numéro d'adhérent. Celui-ci est unique. J'ai modifié la table hikashop&#95;user pour mettre sur la colonne un index unique. Cependant lors de l'inscription l'utilisateur joomla est tout de même créé. Que faire ? Je souhaiterai que l'inscription ne puisse se faire et idéalement afficher un message pour expliquer cela.  Merci pour votre aide.")*

Bonjour,

Faites un Code:

var_dump($data); exit;

Ainsi, lorsque vous ferez votre test vous verrez ce qu'il y a dans $data et si il y a bien Code:

$data['user']['user_matricule']

de disponible.

Please [Log in](/login?return=aHR0cHM6Ly93d3cuaGlrYXNob3AuY29tL2ZvcnVtLzUtc3VwcG9ydC1lbi1mcmFuY2Fpcy1mcmVuY2gtc3VwcG9ydC0vOTA0Mjk1LWNoYW1wcy1wZXJzb25uYWxpc2VzLWV0LWNsZS11bmlxdWU/dG1wbD1tYXJrZG93bg==) or [Create an account](/component/users/registration?Itemid=101) to join the conversation.

Board Categories HikaShop- Install &amp; Update- Product &amp; Category Display- Content Creation- Sales and Orders- - Orders management- - Reports &amp; Statistics- Customers- Checkout- Payment Methods- Shipping Methods- Import &amp; Export (CSV, XLS…)- Specific Features- - Affilation- - Taxes- - Wishlist- - Vote- - Carousel &amp; Slider- - Mass Actions- - Filters &amp; Search- - Discount &amp; Coupon- - Feature Request- Integrations- Showcase- General Talk about HikaShop- Development- - HikaShop 3.0 Beta- Translation- Commercial Jobs HikaShop Components- HikaMarket- - Market: Feature requests- - Market: How to?- - Market: Bug Report- HikaSerial- - General talk about HikaSerial- - Serial: Bug Report- - Serial: How to?- - Support en Français de HikaSerial (French Support)- - HikaSubscription- HikaAuction- - Auction: Feature requests- - Auction: How to?- - Auction: Bug report Hikashop around the world- Support en Français (French Support)- Russian- - FAQ. Курс выживания с Hikashop. Частые вопросы и о- - Расширения Hikashop- - Наши сайты на Hikashop- 日本語版サポート(Japanese Support)- Thai- German Archives- Bug Report- How to?

[](/forum/topics/feed/mode-topics?format=feed&type=rss)

Time to create page: 0.233 seconds

[Powered by](/forum/credits) [Kunena Forum](https://www.kunena.org)

[](#top)
