Contrainte avec boolean

Contrainte avec boolean
0
Tags: #<Tag:0x00007f3950a9f188>

Bonjour,

Nous avons des difficultés pour créer des contraintes front à partir de champ boolean.

Nous souhaitons rendre un champ texte obligatoire si le boolean vaut true.

Voici notre paramétrage :

Pour la contrainte :

Pour l’impact :

Nous avons réussi à faire la contrainte front du tuto, mais celle-ci repose sur une value en String.
Pouvez-vous nous indiquer qu’elle valeur renseigner pour l’impact svp.

Merci d’avance.
Cordialement

Normalement une condition liée à un attribut de type booléen devrait marcher, si ce n’est pas le cas c’est une anomalie.

Mais bon, est-ce que le pb n’est pas plutôt qu’il manque la logique inverse ?
En effet là tu écris juste si EXISTE est vrai alors TEXTE est obligatoire mais tu ne gère pas le sinon

Moi je mettrais donc plutôt true dans la condition et Tool.isTrue([VALUE:EXISTE]) dans l’impact. Ce qui revient à dire TEXTE est obligatoire en fonction de la valeur de EXISTE.

PS: je sais bien que c’est un test ici mais je ne valide pas ce genre de nommages mono-mot (EXISTE ou TEXTE), on a un partenaire qui est encore tombé dernièrement sur un obscur mot clé réservé SQL non standard en utilisant des nommages de ce genre (on empêche les mots réservés SQL99)

Nous avons fait des tests avec tes préconisations (logique d’expression et nom d’attributs) et nous n’avons pas eu de résultat.

En impact nous avons renseigné Tool.isTrue([VALUE:BOOLTEST]) (ton expression renvoyait une erreur)

L’attribut en condition me semble plus géré depuis longtemps car ça revient à tester directement [VALUE:CHAMPBOOL] en type expression.

Value renvoit le bon type suivant le champ. Texte bool entier… et ne surtout pas mettre du code back en front genre Tool.

Il y avait bien en bug d’affichage sur le UIField.required qui ne changeait pas bien la classe du form-group. Par contre au niveau de la contrainte front, un champ boolean vaut bien true / false.

on peut faire une fonction auto-appelante front pour debugger son expression, exemple :

(function() {
   var v = obj.getField("x").getValue(); // or [VALUE:x]
   console.log("val=" + v);
   debugger; // force to stop here !
   return !!v; // ensure to convert null or "" to false
})()

Si votre objet contient trop de contraintes front, il est plutôt conseillé de directement scripter des “change” dans le hook front form.onload.

Et ne pas oublier de mettre les contraintes de type champ obligatoire ou modifiable en back ou dans les hooks validate de l’objet.
Car en cas d’appels API ou Ajax les contraintes front ne s’appliqueront pas.