Exécuter par programme un ensemble d'actions (module Rules)

23

Je veux utiliser l'interface utilisateur de règles pour définir certains ensembles d'actions, mais je veux exécuter ces actions par programme à partir d'un module personnalisé.

Comment exécuter l'action par code et passer les arguments nécessaires (juste un nœud dans ce cas).

Merci!

valderama
la source

Réponses:

26

Si vous l'avez configuré en tant que composant de règles, vous pouvez utiliser une rules_invoke_componentalternative, vous pouvez invoquer un événement, ce qui pourrait déclencher plusieurs règles en utilisant rules_invoke_event.

Les deux sont similaires en ce que vous passez d'abord un nom / id et que le reste des arguments est transmis, donc quelque chose comme

 rules_invoke_component('name', $node);

si votre règle de composant personnalisé a plusieurs paramètres, passez-les un par un et séparez-les avec une virgule comme exemple

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

est bien comment vous devez le faire. Cela dépend à nouveau de la façon dont la règle / le composant est défini et configuré.

googletorp
la source
Merci, c'était exactement la fonction que je cherchais. J'ai dû passer l'argument directement, cependant - probablement parce que je n'ai qu'un seul argument configuré dans le composant. rules_invoke_component('rules_mycomponent', $node);
valderama
@valderama, super j'ai mis à jour ma réponse au cas où d'autres auraient besoin des mêmes informations.
googletorp
Est-ce que cela fonctionne pour Drupal 6?
@landing Rules a beaucoup changé de 6 à 7, mais rules_invoke_eventn'existe pas dans 6 rules_invoke_component, mais je ne pense pas que les règles dans 6 aient le concept de composants.
googletorp
si vous avez un composant de règle personnalisé, passez les paramètres un par un et séparez-les avec un exemple de virgulerules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef