Zend Framework Per-ustawienia modułowe

W Steven Lloyd Watkin , piątek 01 stycznia 2010 22:40

Utworzona na to stanowisko, które wymaga mniej konfiguracji można znaleźć układ oparty na Module - Zend Framework .

Podczas korzystania z Zend Framework z modułów, jego oczywiste, że jeśli używasz różnych (pod) stron z tej samej aplikacji nie koniecznie chcą tego samego skrypty układ dla każdej części. Postanowiłem iść z następującą strukturę strony:

  / Zastosowanie
     / Kontrolery
         ...
     / Models
     / Modules
         / Default
             / Kontrolery
             / Layout
                 / Scripts
             / Views
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Problem polegał na tworzeniu skryptów układu na poszczególnych modułów. Odpowiedź przyszła poprzez wykorzystanie Action Helper. Konfigurowanie układów na poszczególnych modułów z trzech etapów:

  1. Application.ini (lub podobnych instalacji konfiguracji):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouts / skrypty"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / skrypty"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / layouts / skrypty"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouts / skrypty" 
  2. Stwórz Action Helper:
      <? Php
     / **
      * Ustawia ścieżkę układu na poszczególnych modułów
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Od 01.01.2010
      * /
     klasy Pro_Controller_Action_Helper_SetLayoutPath
         rozciąga Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Ustawia ścieżkę układ oparty na module
          * /
         publicznych preDispatch function ()
         {
        	 $ Module = $ this-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        - GetInvokeArg> ("bootstrap")) {
    
    	         $ Config = $ bootstrap-> GetOptions ();
    
    	         if (isset ($ config ['układ'] [$ module] ['zasobów'] ['layoutPath'])) {
    	             = $ LayoutPath
    	                  $ Config [$ module] ['układ'] ['zasobów'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  - GetHelper> ("układ")
    	                  - SetLayoutPath> ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. I wreszcie boostrap pomocnika działania:
      ...
         / **
          * Ustawia skrypty układ na poszczególnych modułów
          * /
         chronione _initLayoutHelper function ()
    	 {
    	     $ This-> bootstrap ("FrontController ');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         Pro_Controller_Action_Helper_SetLayoutPath new ());
    	 }
     ... 

4 Odpowiedzi na "Zend Framework Per-modułowe ustawienia"

  1. Behrang mówi:

    Witam pierwsze dzięki za pomocny poradnik ale powiedz mi, gdzie mogę utworzyć pomocniczą akcji o nazwie pliku czarownica?
    behrang

  2. Witam Behrang, tworzyć pomocnika działania z zależności od tego, jak nazwa, mam swój własny "biblioteka" z nazw "Pro". Można równie dobrze zadzwonić do klasy "SetLayoutPath" i umieścić go gdziekolwiek chcesz, pod warunkiem, że kod może go znaleźć i można rozszerzyć wymaganych klas

  3. Kanth shashi mówi:

    Witam, iam mylić z tworzenia specyficznych dla modułu ustawienia bazy danych ... czy ktoś ma pomysł?

  4. Myślę, że może to łatwo osiągnąć Używając opcji powyżej wzorca. Po pierwsze, stworzenie opcji w pliku ini wzdłuż plików:

    moduleName.db.user = "
    moduleName.db.password = "
    moduleName2.db.user = "
    ... Etc ...

    Następnie po prostu wygenerować połączenia z bazą danych zgodnie z potrzebami (Zend_Db:: factory () lub podobne) i przechowujemy ją w rejestrze lub ustawić go jako domyślny adapter w przypadku korzystania Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Zostaw odpowiedź













Panorama tematu przez Themocracy

10 gości online
8 osób, 2 boty, 0 użytkowników
Max odwiedzających dziś: 14 na 07:34 UTC
W tym miesiącu: 26 z 05.7.2011 00:35 UTC
W tym roku: 130 w 28-03-2011 22:40 UTC
Cały czas: 130 w 28-03-2011 22:40 UTC