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


















































Hi đầu tiên nhờ bạn hướng dẫn hữu ích, nhưng cho tôi biết nơi tôi tạo helper hành động với tên file phù thủy?
behrang
Hi Behrang, tạo ra các helper hành động với bất cứ tên nào bạn muốn, tôi có "thư viện" của riêng mình với không gian tên "Pro". Bạn có thể chỉ là một cách dễ dàng gọi 'SetLayoutPath' lớp và đặt nó ở nơi nào bạn thích, cung cấp các mã có thể tìm thấy nó và bạn mở rộng các lớp học yêu cầu
Hi, iam nhầm lẫn với các thiết lập cơ sở dữ liệu thiết lập module cụ thể ... không ai có một ý tưởng?
Tôi nghĩ rằng điều này có thể dễ dàng đạt được usign các mô hình trên. Thứ nhất, tạo ra các tùy chọn trong file ini của bạn cùng các tập tin của:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Vv ...
Sau đó chỉ đơn giản là tạo kết nối cơ sở dữ liệu của bạn như bạn thấy phù hợp (Zend_Db:: nhà máy sản xuất () hoặc tương tự) và giấu nó đi trong đăng ký, hoặc thiết lập nó như là bộ chuyển đổi mặc định nếu sử dụng Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).