Как проверить, установлен ли один флажок вкл / выкл?

8

Кажется, нет никакого способа проверить значение одного флажка вкл / выкл (булево) в селекторе данных для модуля Правил. Если «field-MyField» = флажок или «field-MyField» = 1, тогда сделайте «бла». Могут ли правила сделать это? Я должен что-то упустить

user785179
источник
Использование собственного PHP не работает, когда я делаю это: echo ([node: field-MyField] == 1) ;. PHP работает, потому что если я просто верну true; тогда он работает. Так, что происходит???!?
user785179
Что ж, получается, что вы не можете использовать токены в пользовательском PHP.
user785179

Ответы:

6

Здесь есть смесь правильных и неправильных деталей, поэтому я постараюсь разобраться в них. Это относится к правилам в Drupal 7 и относится к работе с логическим полем.

Чтобы создать условие, которое проверяет логическое состояние поля (true / false, yes / no, проверено / не отмечено), сначала убедитесь, что вы можете получить доступ к полю в селекторе данных. Как упомянул Боян выше, так и на самой странице администратора,

Чтобы поля сущностей появлялись в селекторе данных, вам, возможно, придется использовать условие «сущность имеет поле» (или «содержимое имеет тип»).

Оператор, которого вы хотите выбрать, - «равно».

В поле «Значение данных» вы можете вводить значения в двух режимах, убедитесь, что вы используете «режим прямого ввода». После этого вы сможете установить флажок, который представляет ИСТИНА для этого поля.

В переводе вы говорите: "Это поле равно TRUE?" Вы также можете отрицать его, оставив его без галочки или используя опцию «negate» ниже.

ezrock
источник
Я ценю, что вы нашли время, чтобы объяснить это. Мне не приходилось трогать что-то подобное снова, но ваше объяснение имеет смысл. Я надеюсь, что это помогает другим.
user785179
3

Вы просто добавляете условие «Сравнение данных», задаете имя поля и вводите «1» в качестве значения. Если поле не отображается в списке полей, сначала добавьте условие «Entity has field» и выберите его там. Затем добавьте «Сравнение данных» далее.

Боян Живанович
источник
Я помещаю 1 в значение данных и получаю: Селектор данных 1 для значения параметра недопустим. Есть еще идеи? Для пояснения, мои данные для сравнения - это узел: field-MyField. Сравнение установлено на EQUALS. Значение данных установлено в 1.
user785179
2

После многих часов проб и ошибок я решил проблему. Не просите меня объяснить это, потому что это не имеет смысла для меня. Если кто-нибудь может объяснить, то это было бы очень ценно!

Я установил новое условие, используя СРАВНЕНИЕ ДАННЫХ. Затем я выбираю «узел: поле-MyField: 0» (на самом деле их может быть до 4 - узел: поле-MyField: 1, узел: поле-MyField: 2 и т. Д.). Затем я установил СРАВНЕНИЕ на РАВНЫЕ. Затем во второй части селектора данных он больше не является селектором данных поля ввода текста, а теперь отображается как переключатель данных. Когда я нажимаю эту кнопку выбора и нажимаю кнопку Сохранить, теперь модуль правил работает правильно.

бьет головой о стену

user785179
источник
0

В обновленной (фиксированной?) Версии Правил для этого добавьте условие сравнения данных, выберите соответствующее поле в селекторе данных node:field-to-check, а затем на следующем шаге оставьте оператор сравнения как equals. В группе значений данных будет установлен флажок, называемый «Значение данных». Правила будут сравниваться со значением флажка, представленным на этой странице.

Zxaos
источник
0

Скорее всего, вы должны использовать правила поддержки форм .

После того, как вы активируете правила формы для конкретной формы, вы можете использовать условие: Элемент формы имеет значение . Это условие может быть использовано как при форма быть построена или подтверждено .

Другой модуль для рассмотрения - это Entity Rules .

kenorb
источник