Ejecutar mediante programación un conjunto de acciones (módulo de reglas)


23

Quiero usar la interfaz de usuario de reglas para definir algunos conjuntos de acciones, pero quiero ejecutar esas acciones mediante programación desde un módulo personalizado.

Cómo ejecuto la acción por código y paso los argumentos necesarios (solo un nodo en este caso).

¡Gracias!

Respuestas:


26

Si lo ha configurado como un componente de reglas, puede usar una rules_invoke_componentalternativa, puede invocar un evento, que podría desencadenar reglas múltiples al usar rules_invoke_event.

Ambos son similares en el sentido de que primero se pasa un nombre / id y se pasa el resto de los argumentos, así que algo como

 rules_invoke_component('name', $node);

si su regla de componente personalizado tiene varios parámetros, páselos uno por uno y sepárelos con una coma como ejemplo

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

es correctamente cómo debes hacerlo. Esto nuevamente depende de cómo se define y configura la regla / componente.


Gracias, esa era exactamente la función que estaba buscando. Sin embargo, tuve que pasar el argumento directamente, probablemente porque solo tengo un argumento configurado en el componente. rules_invoke_component('rules_mycomponent', $node);
valderama

@valderama, genial, actualicé mi respuesta en caso de que otros necesiten la misma información.
googletorp

¿Funciona esto para drupal 6?

@landing Las reglas han cambiado mucho de 6 a 7, pero rules_invoke_eventexiste en 6 rules_invoke_componentno, pero no creo que las reglas en 6 tengan el concepto de componentes.
googletorp

si tiene un componente de regla personalizado, pase los parámetros uno por uno y sepárelos con un ejemplo de comarules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef,
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.