Programowo uruchom zestaw akcji (moduł Reguły)

23

Chcę użyć interfejsu użytkownika reguł do zdefiniowania niektórych zestawów akcji, ale chcę je wykonać programowo z niestandardowego modułu.

Jak wykonać akcję kodem i przekazać potrzebne argumenty (w tym przypadku tylko węzeł).

Dzięki!

valderama
źródło

Odpowiedzi:

26

Jeśli skonfigurowałeś go jako komponent reguł, możesz użyć rules_invoke_componentalternatywnie możesz wywołać zdarzenie, które może wywołać wiele reguł za pomocą rules_invoke_event.

Oba są podobne pod tym względem, że przekazujesz najpierw imię / id, a reszta argumentów jest przekazywana, więc coś w tym rodzaju

 rules_invoke_component('name', $node);

jeśli reguła komponentu niestandardowego ma kilka parametrów, przekaż je jeden po drugim i oddziel je przecinkiem jako przykładem

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

jest właściwie, jak musisz to zrobić. To znowu zależy od sposobu zdefiniowania i skonfigurowania reguły / komponentu.

googletorp
źródło
Dzięki, dokładnie takiej funkcji szukałem. Musiałem jednak przekazać argument bezpośrednio - prawdopodobnie dlatego, że mam tylko jeden argument skonfigurowany w komponencie. rules_invoke_component('rules_mycomponent', $node);
valderama
@valderama, świetnie, zaktualizowałem swoją odpowiedź na wypadek, gdyby inni potrzebowali tych samych informacji.
googletorp
Czy to działa na Drupal 6?
@ Zasady lądowania zmieniły się bardzo z 6 na 7, ale rules_invoke_eventistnieje w 6 rules_invoke_component, nie, ale nie wierzę, że reguły w 6 mają pojęcie komponentów.
googletorp
jeśli masz niestandardowy komponent reguł, przekaż parametry jeden po drugim i oddziel je przecinkiemrules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef