以编程方式执行操作集(“规则”模块)


23

我想使用“规则UI”定义一些操作集,但想从自定义模块中以编程方式执行这些操作。

如何通过代码执行操作并传递所需的参数(在这种情况下,只是一个节点)。

谢谢!

Answers:


26

如果已将其设置为规则组件,则可以使用rules_invoke_component,也可以调用一个事件,该事件可以通过使用触发多个规则rules_invoke_event

两者的相似之处在于,您首先传递了一个名称/ ID,其余的args也传递了,所以类似

 rules_invoke_component('name', $node);

如果您的自定义组件规则具有多个参数,则将它们一个接一个地传递并以逗号分隔

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

正确地是您需要执行的操作。这又取决于规则/组件的定义和配置方式。


谢谢,这正是我想要的功能。不过,我必须直接传递参数-可能是因为我只在组件中配置了一个arg。 rules_invoke_component('rules_mycomponent', $node);
valderama 2011年

@valderama,太棒了,我更新了我的答案,以防其他人需要相同的信息。
googletorp

这对drupal 6有用吗?

@着陆规则已从6更改为7,但rules_invoke_event在6中rules_invoke_component却没有,但我不相信6中的规则具有组件的概念。
googletorp

如果您有自定义规则组件,则一个接一个地传递参数,并用逗号分隔它们rules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.