Как отладить правило, которое не хочет срабатывать?


У меня есть узлы, которые могут быть помечены глобальным флагом. Когда узел обновляется, я хочу, чтобы правило снимало флажок с этого узла.

  • Событие правил: После обновления существующего содержимого

  • Действие правил: Снимите флажок с узла.

    Затем я выбираю флаг "селектор данных" = узел, "Пользователь, от имени которого нужно отметить" = узел: автор (это поле следует игнорировать, потому что это глобальный флаг), "проверка разрешений" - это неконтролируемый.

Когда я обновляю узел, на котором установлен глобальный флаг, он не удаляется.

Я что-то неправильно настроил? Как я могу отладить правило, которое не хочет срабатывать?

Author: Community, 2012-09-20

2 answers

Модуль Флага

"Пользователь, от имени которого нужно отметить", в этом случае не будет проигнорирован.

Когда флаг является глобальным, пользователи не обязательно имеют необходимые разрешения для его переключения. Убедитесь, что роли пользователя разрешено отмечать или снимать соответствующий флаг.

Статус узлов "опубликовано" является хорошим примером "глобального флага" (хотя он не имеет ничего общего с модулем флага). Когда published ИСТИННО, содержимое видно, когда ложно, оно скрыто. Хотя флаг является глобальным, только те, у кого есть разрешение "публиковать контент", могут переключать его. Модуль флага работает аналогично.


Модуль Правил

Правила имеют встроенный отладчик, который иногда бывает полезен. Его можно найти в разделе администратор/конфигурация/рабочий процесс/правила/настройки


Обычно я в конечном итоге возвращаюсь к dd() или dpm(), хотя при отладке правил. Правила - это, конечно, невероятный модуль, но отладка иногда может быть болезненной.

 4
Author: Citricguy, 2012-09-21 03:17:54

Правила - это здорово, но иногда также сложно отлаживать, если что-то работает не так, как вы ожидаете. Существуют некоторые типичные средства для такой отладки (более подробно описано ниже), но Keep-It-Super-Sметодика, которую я часто использую, является моей БИНГО- трюк. Пример такого правила можно найти в моем ответе на " Какое условие правил можно использовать для отправки электронной почты пользователю, когда администратор обновляет свой профиль?". Глупый, но простой и эффективный (я думаю).

Если вышесказанное не помогает, то обычно существует 2 способа более продвинутой отладки, как более подробно описано ниже.

Журнал оценки правил

В настройках Правил немного поэкспериментируйте со средствами отладки, которые поставляются с модулем правил. По крайней мере, взгляните на " Журнал оценки правил" ( чтобы проверить, выполняется ли логика правил, на самом деле соответствует тому, что вы ожидаете от этой логики быть).

Действие правил для отображения значения (с помощью devel)

Вы также можете (временно) включить модуль Devel, чтобы вы могли (временно) добавить действие правил, например "Отобразить значение".

Очевидно, убедитесь, что нет Условий Правил, которые препятствовали бы выполнению Действия(действий) правил (при необходимости временно удалите такие Условия Правил).

Дополнительная информация

Для получения более подробной информации об этих 2 вариантах обратитесь к Правилам отладка, как объяснено в ответе на " Как я могу отобразить значение переменной внутри условия?".

 1
Author: Pierre.Vriens, 2017-04-13 12:46:55