Zend Framework Per-Module dựa trên thiết lập
Tôi đã tạo ra một followup bài đăng này đòi hỏi cấu hình ít hơn, xin vui lòng xem Giao diện dựa trên module - Zend Framework .
Khi sử dụng khuôn khổ zend với các mô-đun, rằng nếu bạn đang chạy khác nhau (phụ) các trang web off cùng một ứng dụng, bạn không nhất thiết muốn cùng một kịch bản bố trí cho từng phần rõ ràng của nó . Tôi quyết định đi với cấu trúc trang web sau đây:
/ Ứng dụng / Bộ điều khiển ... / Mô hình / Modules / Mặc định / Bộ điều khiển / Bố trí / Scripts / Views / Scripts / AnotherModule ... / Scripts
Vấn đề đã được thiết lập các kịch bản bố trí trên một cơ sở cho mỗi mô-đun. Câu trả lời đến thông qua việc sử dụng một người trợ giúp hành động. Thiết lập bố trí trên một cơ sở cho mỗi mô-đun bao gồm ba bước:
- Application.ini (hoặc tương tự thiết lập cấu hình):
admin.resources.layout.layoutPath = APPLICATION_PATH / modules / admin / layouts / scripts " default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / thành viên / layouts / scripts" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / liên kết / layouts / scripts"
- Tạo người trợ giúp hành động của bạn:
<? Php / ** * Thiết lập đường dẫn bố trí trên một cơ sở cho mỗi mô-đun * * @ Tác giả Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Kể từ 2010/01/01 * / lớp Pro_Controller_Action_Helper_SetLayoutPath mở rộng Zend_Controller_Action_Helper_Abstract { / ** * Bộ bố trí đường dẫn dựa trên mô-đun * / public function preDispatch () { $ Module = $ this-> getRequest () -> getModuleName (); nếu ($ bootstrap = $ this-> getActionController () -> GetInvokeArg (bootstrap ')) { $ Config = $ bootstrap-> getOptions (); if (isset ($ config [$ mô-đun] ['nguồn lực'] ['bố trí'] ['layoutPath'])) { $ LayoutPath = $ Config [Module] ['nguồn lực'] ['bố trí'] ['layoutPath']; $ This-> getActionController () -> GetHelper ('bố trí') -> SetLayoutPath ($ layoutPath); } } } }
- Và cuối cùng boostrap các helper hành động:
... / *** Thiết lập các kịch bản bố trí trên một cơ sở cho mỗi mô-đun * / bảo vệ chức năng _initLayoutHelper () {$ this-> tải và khởi động hệ điều hành ('frontController); bố trí = Zend_Controller_Action_HelperBroker :: addHelper (Pro_Controller_Action_Helper_SetLayoutPath mới ());} ... .

















































