Comment puis-je vérifier si une seule case on / off est cochée?

8

Il ne semble pas y avoir de moyen de vérifier la valeur d'une seule case on / off (booléenne) dans le sélecteur de données pour le module Rules. Si "field-MyField" = coché ou "field-MyField" = 1, faites "blah". Les règles peuvent-elles faire cela? J'ai dû louper quelque chose

user785179
la source
L'utilisation de PHP personnalisé ne fonctionne pas lorsque je fais cela: echo ([node: field-MyField] == 1) ;. PHP fonctionne parce que si je retourne juste vrai, alors ça marche. Alors, quoi de neuf???!?
user785179
Eh bien, il s'avère que vous ne pouvez pas utiliser de jetons dans le PHP personnalisé.
user785179

Réponses:

6

Il y a un mélange de détails corrects et incorrects ici, donc je vais essayer de les trier. Ceci concerne les règles sur Drupal 7 et s'applique à l'utilisation d'un champ booléen.

Pour créer une condition qui vérifie l'état booléen d'un champ (vrai / faux, oui / non, coché / décoché), assurez-vous d'abord que vous pouvez accéder au champ dans le sélecteur de données. Comme Bojan l'a mentionné ci-dessus, et comme il l'a mentionné sur la page d'administration elle-même,

Pour faire apparaître les champs d'entité dans le sélecteur de données, vous devrez peut-être utiliser la condition «l'entité a un champ» (ou «le contenu est de type»).

L'opérateur que vous souhaitez choisir est "égal".

Pour le champ "Data Value", vous pouvez entrer des valeurs dans deux modes, assurez-vous que vous utilisez "direct input mode". Vous devriez alors être en mesure de cocher la case qui représente VRAI pour ce champ.

Traduit, ce que vous dites est: "Ce champ est-il égal à VRAI?" Vous pouvez également le nier en le laissant décoché ou en utilisant l'option "nier" ci-dessous.

ezrock
la source
Je vous remercie d'avoir pris le temps d'expliquer cela. Je n'ai pas eu à toucher à nouveau quelque chose comme ça, mais votre explication est logique. J'espère que cela aide les autres.
user785179
3

Vous ajoutez simplement une condition de "comparaison de données", spécifiez le nom du champ et entrez "1" comme valeur. Si le champ n'apparaît pas dans la liste des champs, ajoutez d'abord une condition "L'entité a un champ" et sélectionnez-y le champ. Ensuite, ajoutez la "comparaison de données" suivante.

Bojan Zivanovic
la source
J'ai mis un 1 dans la valeur des données et j'obtiens: Le sélecteur de données 1 pour la valeur du paramètre n'est pas valide. D'autres idées? Pour clarifier, mes données pour comparer le champ sont node: field-MyField. La comparaison est définie sur EQUALS. La valeur des données est définie sur 1.
user785179
2

Après plusieurs heures d'essais et d'erreurs, j'ai fini par résoudre le problème. Ne me demandez pas d'expliquer cela car cela n'a aucun sens pour moi. Si quelqu'un peut expliquer, alors ce serait grandement apprécié!

J'ai défini une nouvelle condition à l'aide de COMPARAISON DES DONNÉES. Je sélectionne ensuite le "node: field-MyField: 0" (il y en a jusqu'à 4 - node: field-MyField: 1, node: field-MyField: 2, etc.). J'ai ensuite réglé la COMPARAISON sur EQUALS. Ensuite, dans la deuxième partie du sélecteur de données, il ne s'agit plus d'un sélecteur de données de zone de saisie de texte, mais apparaît maintenant comme un sélecteur de données de case à cocher. Lorsque je clique sur ce sélecteur de données de case à cocher et que je clique sur Enregistrer, le module de règles fonctionne désormais correctement.

frappe la tête sur le mur

user785179
la source
0

Dans la version mise à jour (fixe?) Des règles, pour ce faire, ajoutez une condition de comparaison de données, sélectionnez le champ approprié dans le sélecteur de données node:field-to-check, puis à l'étape suivante, laissez l'opérateur de comparaison sur equals. Dans le groupe Valeur de données, il y aura une case à cocher nommée utilement "Les règles de valeur de données" compareront avec la valeur de la case à cocher telle que soumise sur cette page.

Zxaos
la source
0

Vous devrez probablement utiliser le support des formulaires de règles .

Une fois que vous avez activé les règles de formulaire pour un formulaire spécifique, vous pouvez utiliser la condition comme: L' élément de formulaire a une valeur . Cette condition peut être utilisée lorsque le formulaire est construit ou validé .

Un autre module à considérer est les règles d'entité .

kenorb
la source