Programmgesteuertes Ausführen eines Aktionssatzes (Modul "Regeln")

23

Ich möchte die Benutzeroberfläche für Regeln zum Definieren einiger Aktionssätze verwenden, diese Aktionen jedoch programmgesteuert über ein benutzerdefiniertes Modul ausführen.

Wie führe ich die Aktion per Code aus und übergebe die benötigten Argumente (in diesem Fall nur einen Knoten).

Vielen Dank!

Valderama
quelle

Antworten:

26

Wenn Sie es als rules_invoke_componentRegelkomponente eingerichtet haben, können Sie es verwenden , alternativ können Sie ein Ereignis aufrufen, durch das mehrere Regeln ausgelöst werden können rules_invoke_event.

Beides ist insofern ähnlich, als du zuerst einen Namen / eine ID übergibst und der Rest der Argumente weitergereicht wird, also so etwas wie

 rules_invoke_component('name', $node);

Wenn Ihre benutzerdefinierte Komponentenregel mehrere Parameter enthält, übergeben Sie diese nacheinander und trennen Sie sie mit einem Komma

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

ist richtig, wie Sie es tun müssen. Dies hängt wiederum davon ab, wie die Regel / Komponente definiert und konfiguriert ist.

googletorp
quelle
Danke, das war genau die Funktion, nach der ich gesucht habe. Ich musste das Argument jedoch direkt übergeben - wahrscheinlich, weil ich nur ein Argument in der Komponente konfiguriert habe. rules_invoke_component('rules_mycomponent', $node);
Valderama
@valderama, toll, ich habe meine Antwort aktualisiert, falls andere die gleichen Informationen benötigen.
googletorp
Funktioniert das für Drupal 6?
@landing Regeln haben sich stark von 6 auf 7 geändert, rules_invoke_eventexistieren aber in 6 rules_invoke_componentnicht, aber ich glaube nicht, dass Regeln in 6 das Konzept von Komponenten haben.
googletorp
Wenn Sie eine benutzerdefinierte Regelkomponente haben, übergeben Sie die Parameter einzeln und trennen Sie sie mit einem Komma. Beispielrules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef