Có thể gọi một hàm bên trong tệp .inc của mô-đun thông qua drush eval không?


12

Tôi có một mô-đun với các tệp (.inc) bổ sung có chứa các chức năng tôi cần để chạy qua Drush. Tôi biết nó có thể chạy drush eval, nhưng khi tôi cố gắng làm điều đó cho các chức năng đó, tôi gặp lỗi sau:

Lỗi nghiêm trọng của PHP: Gọi hàm không xác định my_module_my_feft () trong /usr/share/php/drush/commands/core/core.drush.inc(1037): mã eval () 'd trên dòng 1

Lệnh này hoạt động (hàm nằm trong tệp .module).

drush eval 'my_module_cron();'

Lệnh này không hoạt động (chức năng nằm trong tệp .inc).

drush eval 'my_module_my_function();'

Có cách giải quyết nào không, ngoài việc di chuyển chức năng trong mô-đun?


Là tập tin inc của bạn được bao gồm / yêu cầu trên tập tin mô-đun? hoặc trong tập tin .info của bạn? Điều này sẽ hoạt động miễn là drupal biết về tệp inc từ tệp .info hoặc nó được bao gồm / bắt buộc trong tệp .module của bạn.
Beebee

Câu trả lời:


18

Bạn có thể thêm module_load_include () vào mã eval của mình giống như bất kỳ nơi nào khác.

Như thế này:

drush eval "module_load_include('inc', 'my_module', 'INCLUDE_FILE_NAME_WITHOUT_EXTENSION'); my_module_my_function();"

Cũng hoạt động cho .installcác tệp, ví dụ:drush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
tanius 28/03/2016

Điều này không làm việc cho tôi. Tôi nhận được Division by zero core.drush.inc(1168) : eval()'d code:1khi tôi gọi module_load_include.
mbomb007

@ mbomb007: bạn đang sử dụng phiên bản drush nào và lệnh bạn đang chạy là gì?
rooby

Đừng bận tâm. Tôi đã sử dụng cùng một loại trích dẫn cả trong và ngoài. drush eval 'module_load_include('...
mbomb007
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.