Программно выполнить набор действий (модуль «Правила»)


23

Я хочу использовать пользовательский интерфейс «Правила» для определения некоторых наборов действий, но хочу выполнить эти действия программно из пользовательского модуля.

Как выполнить действие по коду и передать необходимые аргументы (в данном случае просто узел).

Благодарность!

Ответы:


26

Если вы настроили его как компонент правил, вы можете использовать rules_invoke_component, в качестве альтернативы, вы можете вызвать событие, которое может вызвать несколько правил с помощью rules_invoke_event.

Оба схожи в том, что вы передаете сначала имя / идентификатор, а остальные аргументы передаются, так что-то вроде

 rules_invoke_component('name', $node);

если ваше правило для пользовательских компонентов имеет несколько параметров, передайте их один за другим и разделите их запятой в качестве примера

rules_invoke_component('rules_save_search_send_activation_sms',  'paramval1', 'paramval2', ....);

правильно, как вам нужно это сделать. Это снова зависит от того, как правило / компонент определены и настроены.


Спасибо, это была именно та функция, которую я искал. Я должен был передать аргумент напрямую, хотя - вероятно, потому что у меня только один аргумент настроен в компоненте. rules_invoke_component('rules_mycomponent', $node);
valderama

@valderama, отлично Я обновил свой ответ, если другим нужна такая же информация.
googletorp

Это работает для drupal 6?

@landing Правила сильно изменились с 6 до 7, но rules_invoke_eventсуществует в 6 rules_invoke_componentнет, но я не верю, что в правилах 6 есть концепция компонентов.
googletorp

если у вас есть пользовательский состав правила, передайте параметры один за другим и разделите их запятым примеромrules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Юсеф
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.