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!

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.