Come posso verificare se una singola casella di controllo on / off è selezionata?


8

Non sembra esserci alcun modo per controllare il valore di una singola casella di controllo on / off (booleano) nel selettore dati per il modulo Regole. Se "field-MyField" = spuntato o "field-MyField" = 1, allora fai 'blah'. Le regole possono farlo? Mi manca qualcosa


L'uso di PHP personalizzato non funziona quando lo faccio: echo ([nodo: field-MyField] == 1) ;. PHP funziona perché se solo restituissi true ;, allora funziona. Quindi che sta succedendo???!?
user785179,

Bene, risulta che non puoi usare i token nel PHP personalizzato.
user785179,

Risposte:


6

C'è un mix di dettagli corretti e non corretti qui, quindi cercherò di risolverli. Questo è per le regole su Drupal 7 e si applica al lavoro con un campo booleano.

Per creare una condizione che controlli lo stato booleano di un campo (vero / falso, sì / no, selezionato / deselezionato), assicurarsi innanzitutto di poter accedere al campo nel selettore dati. Come Bojan ha menzionato sopra e come menzionato nella stessa pagina di amministrazione,

Per far apparire i campi entità nel selettore dati, potrebbe essere necessario utilizzare la condizione 'entità ha campo' (o 'il contenuto è di tipo').

L'operatore che si desidera scegliere è "uguale".

Per il campo "Valore dati", è possibile inserire valori in due modalità, accertarsi di utilizzare la "modalità di immissione diretta". Dovresti quindi essere in grado di selezionare la casella che rappresenta VERO per quel campo.

Tradotto, quello che stai dicendo è "Questo campo è uguale a VERO?" Puoi anche negarlo lasciandolo deselezionato o usando l'opzione "nega" qui sotto.


Apprezzo il tuo tempo per spiegarlo. Non ho dovuto toccare di nuovo qualcosa del genere, ma la tua spiegazione ha senso. Spero che aiuti gli altri.
user785179

3

Devi solo aggiungere una condizione "Confronto dati", specificare il nome del campo e inserire "1" come valore. Se il campo non appare nell'elenco dei campi, aggiungi prima una condizione "L'entità ha un campo" e seleziona il campo lì. Quindi aggiungere il "Confronto dei dati" successivo.


Inserisco un 1 nel valore dei dati e ottengo: il selettore di dati 1 per il valore del parametro non è valido. Altre idee? Per chiarire, i miei dati per confrontare field sono node: field-MyField. Il confronto è impostato su EQUALS. Il valore dei dati è impostato su 1.
user785179

2

Dopo molte ore di tentativi ed errori, ho finito per risolvere il problema. Non chiedermi di spiegarlo perché non ha senso per me. Se qualcuno può spiegare, allora sarebbe molto apprezzato!

Ho impostato una nuova condizione utilizzando CONFRONTO DATI. Seleziono quindi il "nodo: campo-MyField: 0" (in realtà ce ne sono fino a 4 - nodo: campo-MyField: 1, nodo: campo-MyField: 2, ecc.). Ho quindi impostato COMPARISON su EQUALS. Quindi, nella seconda parte del selettore di dati, non è più un selettore di dati della casella di input di testo, ma ora appare come un selettore di dati della casella di controllo. Quando faccio clic sul selettore di dati della casella di controllo e premo Salva, ora il modulo delle regole funziona correttamente.

sbatte la testa sul muro


0

Nella versione aggiornata (fissa?) Delle Regole, per fare ciò, aggiungi una condizione di Confronto dati, seleziona il campo appropriato nel selettore dati node:field-to-check, quindi al passaggio successivo lascia l'operatore di confronto come equals. Nel gruppo Valore dati, verrà visualizzata una casella di controllo denominata Regole "Valore dati" che verrà confrontata con il valore della casella di controllo inviato in questa pagina.


0

Molto probabilmente è necessario utilizzare il supporto moduli regole .

Dopo aver attivato le regole del modulo per un modulo specifico, è possibile utilizzare la condizione come: L' elemento del modulo ha valore . Questa condizione può essere utilizzato sia se il modulo è in fase di costruzione o convalidato .

Altro modulo da considerare è Entity Rules .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.