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

23

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

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

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

Valderama
источник

Ответы:

26

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

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

 rules_invoke_component('name', $node);

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

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

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

googletorp
источник
Спасибо, это была именно та функция, которую я искал. Я должен был передать аргумент напрямую, хотя - вероятно, потому что у меня только один аргумент настроен в компоненте. 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');
Юсеф