เรียกใช้ชุดการกระทำโดยทางโปรแกรม (โมดูลกฎ)


23

ฉันต้องการใช้กฎ UI เพื่อกำหนดชุดการกระทำบางอย่าง แต่ต้องการดำเนินการกระทำเหล่านั้นโดยทางโปรแกรมจากโมดูลที่กำหนดเอง

ฉันจะรันการกระทำด้วยรหัสและส่งผ่านอาร์กิวเมนต์ที่จำเป็น (แค่โหนดในกรณีนี้)

ขอบคุณ!

คำตอบ:


26

ถ้าคุณได้ตั้งขึ้นเป็นองค์ประกอบกฎคุณสามารถใช้ทางเลือกที่คุณสามารถเรียกเหตุการณ์ซึ่งอาจเรียกได้หลายกฎโดยใช้rules_invoke_componentrules_invoke_event

ทั้งสองมีความคล้ายคลึงกันในการที่คุณผ่านชื่อ / id แรกและส่วนที่เหลือของ args จะถูกส่งผ่านไปดังนั้นสิ่งที่ชอบ

 rules_invoke_component('name', $node);

หากกฎองค์ประกอบที่กำหนดเองของคุณมีพารามิเตอร์หลายตัวส่งต่อพวกเขาทีละคนและแยกพวกเขาด้วยเครื่องหมายจุลภาคเป็นตัวอย่าง

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

เป็นวิธีที่คุณต้องทำ สิ่งนี้ขึ้นอยู่กับการกำหนดและกำหนดกฎ / ส่วนประกอบอีกครั้ง


ขอบคุณนั่นคือฟังก์ชั่นที่ฉันกำลังมองหา ฉันต้องผ่านการโต้แย้งโดยตรง - อาจเป็นเพราะฉันเพิ่งตั้งค่า arg หนึ่งตัวในองค์ประกอบ rules_invoke_component('rules_mycomponent', $node);
valderama

@ valderama ยิ่งใหญ่ฉันอัปเดตคำตอบของฉันในกรณีที่คนอื่นต้องการข้อมูลเดียวกัน
googletorp

ใช้งานได้กับ drupal 6 หรือไม่

@landing Rules มีการเปลี่ยนแปลงมากมายจาก 6 เป็น 7 แต่rules_invoke_eventไม่มีใน 6 rules_invoke_componentแต่ฉันไม่เชื่อว่ากฎใน 6 มีแนวคิดเกี่ยวกับส่วนประกอบ
googletorp

หากคุณมีกฎที่กำหนดเองที่สอดคล้องกันให้ส่งพารามิเตอร์ทีละหนึ่งและแยกพวกเขาด้วยตัวอย่างจุลภาคrules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.