Quand je crée un champ de type ENUM, non obligatoire, avec un Redering par defaut (vide), je peux ne pas choisir de valeur et le laisser vide sans problème.
Par contre, quand je décide de mettre son Rendering à “Select with search / pill box” pour avoir la fonctionnalité de recherche, je ne peux plus le laisser vide. Le champ prend automatiquement la première valeur de la liste si aucune valeur n’a été choisie.
Exemple :
Création d’un champ de type ENUM avec une liste de valeurs, non obligatoire, avec un Rendering “Select with search / pill box” :
Problème 1 : Valeur par défaut présélectionnée : Dame => première valeur de la liste
Problème 2 :
On désélectionne Dame
On enregistre le formulaire ==> l’enregistrement se fait correctement
On entre à nouveau dans le formulaire de la ligne créée ==> on retrouve le champ présélectionné sachant qu’il n’a pas été sélectionné lors de la création
Comme indiqué, pour vider un champ, il faut utiliser la croix (du select2).
Si vous souhaitez avoir une option/valeur vide, il faut rester en rendering simple (select natif) + champ facultatif.
Là vous allez stocker en base “NULL” et pas null, au pire il faur remplacer la valeur “NULL” par “” dans le preValidate.
Utiliser un caractère spécial n’est vraiment pas recommandé, car peut potentiellement nuire à tous vos import/exports de données, pb d’encoding, comparaison de “NULL” avec vide ou null, etc. La règle de Simplicité est de faire un trim sur les champs textuels, et je doute que Alt+255 en fasse partie : mettez à la rigueur un libellé explicite “(vide)” ou “(sans objet)” ou “(not defined)”…
Mais encore une fois, ce n’est pas la bonne approche que de créer une option vide, c’est le caractère “facultatif” et le rendering du champ qui gère cette option.