Wie überprüfe ich, ob ein einzelnes Ein / Aus-Kontrollkästchen aktiviert ist?

8

Es scheint keine Möglichkeit zu geben, den Wert eines einzelnen Ein / Aus-Kontrollkästchens (Boolescher Wert) in der Datenauswahl für das Modul Regeln zu aktivieren. Wenn "field-MyField" = markiert oder "field-MyField" = 1 ist, dann mache 'blah'. Können Regeln das tun? Mir muss etwas fehlen

user785179
quelle
Die Verwendung von benutzerdefiniertem PHP funktioniert nicht, wenn ich dies tue: echo ([node: field-MyField] == 1);. PHP funktioniert, denn wenn ich nur true zurückgebe, dann funktioniert es. Also, was ist los???!?
user785179
Nun, es stellt sich heraus, dass Sie im benutzerdefinierten PHP keine Token verwenden können.
user785179

Antworten:

6

Es gibt hier eine Mischung aus richtigen und falschen Details, also werde ich versuchen, sie zu sortieren. Dies gilt für Regeln in Drupal 7 und gilt für die Arbeit mit einem Booleschen Feld.

Stellen Sie zunächst sicher, dass Sie auf das Feld in der Datenauswahl zugreifen können, um eine Bedingung zu erstellen, die den Booleschen Status eines Felds überprüft (wahr / falsch, ja / nein, aktiviert / deaktiviert). Wie Bojan oben erwähnt hat und wie es auf der Admin-Seite selbst erwähnt wurde,

Um Entitätsfelder in der Datenauswahl anzuzeigen, müssen Sie möglicherweise die Bedingung 'Entität hat Feld' verwenden (oder 'Inhalt ist vom Typ').

Der Operator, den Sie auswählen möchten, ist "gleich".

Für das Feld "Datenwert" können Sie Werte in zwei Modi eingeben. Stellen Sie sicher, dass Sie den "direkten Eingabemodus" verwenden. Sie sollten dann in der Lage sein, das Kontrollkästchen zu aktivieren, das TRUE für dieses Feld darstellt.

Übersetzt sagen Sie: "Ist dieses Feld gleich WAHR?" Sie können es auch negieren, indem Sie es deaktivieren oder die unten stehende Option "Negieren" verwenden.

Ezrock
quelle
Ich weiß es zu schätzen, dass Sie sich die Zeit genommen haben, dies zu erklären. Ich musste so etwas nicht noch einmal anfassen, aber Ihre Erklärung macht Sinn. Ich hoffe es hilft anderen.
user785179
3

Sie fügen einfach eine Bedingung "Datenvergleich" hinzu, geben den Feldnamen an und geben "1" als Wert ein. Wenn das Feld nicht in der Liste der Felder angezeigt wird, fügen Sie zuerst die Bedingung "Entität hat Feld" hinzu und wählen Sie das Feld dort aus. Fügen Sie dann als nächstes den "Datenvergleich" hinzu.

Bojan Zivanovic
quelle
Ich setze eine 1 in den Datenwert und erhalte: Datenauswahl 1 für Parameterwert ist ungültig. Irgendwelche anderen Ideen? Zur Verdeutlichung sind meine zu vergleichenden Daten das Feld node: field-MyField. Der Vergleich ist auf EQUALS eingestellt. Der Datenwert wird auf 1 gesetzt.
user785179
2

Nach vielen Stunden Versuch und Irrtum löste ich das Problem. Bitten Sie mich nicht, dies zu erklären, da es für mich keinen Sinn ergibt. Wenn jemand erklären kann, dann wäre das sehr dankbar!

Ich habe mit DATA COMPARISON eine neue Bedingung festgelegt. Ich wähle dann den "Knoten: Feld-MyField: 0" (es gibt tatsächlich bis zu 4 davon - Knoten: Feld-MyField: 1, Knoten: Feld-MyField: 2 usw.). Ich habe dann den VERGLEICH auf GLEICH gesetzt. Im zweiten Datenauswahlteil handelt es sich dann nicht mehr um eine Datenauswahlfeld-Datenauswahl, sondern wird jetzt als Kontrollkästchen-Datenauswahl angezeigt. Wenn ich auf dieses Kontrollkästchen Datenauswahl klicke und auf Speichern drücke, funktioniert das Regelmodul jetzt ordnungsgemäß.

knallt Kopf an Wand

user785179
quelle
0

Fügen Sie in der aktualisierten (festen?) Version von Rules dazu eine Datenvergleichsbedingung hinzu, wählen Sie das entsprechende Feld in der Datenauswahl aus node:field-to-checkund lassen Sie im nächsten Schritt den Vergleichsoperator als equals. In der Datenwertgruppe gibt es ein Kontrollkästchen mit dem Namen "Datenwert". Regeln werden mit dem Wert des Kontrollkästchens auf dieser Seite verglichen.

Zxaos
quelle
0

Höchstwahrscheinlich müssen Sie die Unterstützung für Regelformulare verwenden .

Sobald Sie die Formularregeln für ein bestimmtes Formular aktiviert haben, können Sie die Bedingung wie folgt verwenden : Formularelement hat Wert . Dieser Zustand kann entweder verwendet werden , wenn das Formular wird aufgebaut bzw. validiert .

Ein weiteres zu berücksichtigendes Modul sind die Entitätsregeln .

Kenorb
quelle