Zend Framework Per-Module thiết lập dựa trên

Bởi Watkin Lloyd Steven , Thứ Sáu 01 Tháng một năm 2010 22:40

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:

  1. 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" 
  2. 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);
    	         }
        	 }
         }
     } 
  3. 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 ());
    	 }
     ... 

4 hồi đáp tới "Zend Framework Per-Module thiết lập dựa trên"

  1. Behrang nói:

    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

  2. Steven Watkin Lloyd cho biết:

    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

  3. Shashi Kanth nói:

    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?

  4. Steven Watkin Lloyd cho biết:

    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 ()).

Để lại một trả lời













Chủ đề của bức tranh toàn cảnh Themocracy

3 khách online
2 khách, 1 chương trình, 0 thành viên
Max khách truy cập hôm nay: 26 lúc 12:46 giờ UTC
Trong tháng này: 26 tại 2011/07/05 12:35 giờ UTC
Trong năm nay: 130 tại 28-03-2011 10:40 UTC
Tất cả thời gian: 130 vào 28-03-2011 10:40 UTC