Lập trình thực thi một bộ hành động (mô-đun quy tắc)


23

Tôi muốn sử dụng Rules UI để xác định một số bộ hành động, nhưng muốn thực hiện các hành động đó theo chương trình từ một mô-đun tùy chỉnh.

Làm thế nào để tôi thực hiện hành động bằng mã và vượt qua các đối số cần thiết (chỉ là một nút trong trường hợp này).

Cảm ơn!

Câu trả lời:


26

Nếu bạn đã thiết lập nó như một thành phần quy tắc, bạn có thể sử dụng rules_invoke_component, thay thế bạn có thể gọi một sự kiện, điều này có thể kích hoạt quy tắc đa dạng bằng cách sử dụng rules_invoke_event.

Cả hai đều giống nhau ở chỗ bạn truyền trước một tên / id và phần còn lại của các đối số được truyền cùng, vì vậy một cái gì đó như

 rules_invoke_component('name', $node);

nếu quy tắc thành phần tùy chỉnh của bạn có một vài tham số chuyển từng cái một và tách chúng bằng dấu phẩy làm ví dụ

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

đúng là làm thế nào bạn cần phải làm điều đó. Điều này một lần nữa phụ thuộc vào cách quy tắc / thành phần được xác định và cấu hình.


Cảm ơn, đó chính xác là chức năng mà tôi đang tìm kiếm. Mặc dù vậy, tôi đã phải truyền trực tiếp đối số - có lẽ vì tôi chỉ có một đối số được cấu hình trong thành phần. rules_invoke_component('rules_mycomponent', $node);
valderama

@valderama, thật tuyệt, tôi đã cập nhật câu trả lời của mình trong trường hợp những người khác cần thông tin tương tự.
googletorp

Điều này có làm việc cho drupal 6 không?

@landing Quy tắc đã thay đổi rất nhiều từ 6 thành 7, nhưng rules_invoke_eventtồn tại trong 6 rules_invoke_componentthì không, nhưng tôi không tin quy tắc trong 6 có khái niệm về các thành phần.
googletorp

nếu bạn có thành phần quy tắc tùy chỉnh, hãy chuyển từng tham số một và tách chúng bằng ví dụ dấu phẩyrules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.