Eseguire a livello di codice un set di azioni (modulo Regole)


23

Voglio usare l'interfaccia utente delle regole per definire alcuni set di azioni, ma voglio eseguire quelle azioni a livello di codice da un modulo personalizzato.

Come eseguire l'azione per codice e passare gli argomenti necessari (solo un nodo in questo caso).

Grazie!

Risposte:


26

Se è stato impostato come componente delle regole, è possibile utilizzare rules_invoke_component, in alternativa è possibile richiamare un evento, che potrebbe attivare le regole multiple utilizzando rules_invoke_event.

Entrambi sono simili in quanto si passa prima un nome / id e il resto degli argomenti viene passato, quindi qualcosa di simile

 rules_invoke_component('name', $node);

se la regola del componente personalizzato ha diversi parametri, passali uno per uno e separali con una virgola come esempio

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

è correttamente come è necessario farlo. Questo dipende ancora da come viene definita e configurata la regola / componente.


Grazie, era esattamente la funzione che stavo cercando. Ho dovuto passare direttamente l'argomento, probabilmente perché probabilmente ho solo un arg configurato nel componente. rules_invoke_component('rules_mycomponent', $node);
valderama,

@valderama, fantastico Ho aggiornato la mia risposta nel caso in cui altri abbiano bisogno delle stesse informazioni.
googletorp

Funziona con drupal 6?

Le regole di @landing sono cambiate molto da 6 a 7, ma rules_invoke_eventesiste in 6 rules_invoke_componentno, ma non credo che le regole in 6 abbiano il concetto di componenti.
googletorp

se hai un componente personalizzato per le regole, passa i parametri uno per uno e separali con l'esempio di virgolarules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.