Zend Framework Per-Module na základě nastavení

Tím, Steven Lloyd Watkin , v pátek 01.1.2010 22:40

Vytvořil jsem reakci na tento post, který vyžaduje méně konfigurace, viz modul založený Layout - Zend Framework .

Při použití Zend Frameworku s moduly, jejich zjevné, že pokud používáte různé (sub-) místa mimo stejná žádost nemusíte nutně chtít stejné rozložení skripty pro každou část. Rozhodl jsem se jít s následující struktury webu:

  / Aplikace
     / Regulátory
         ...
     / Modely
     / Modules
         / Default
             / Regulátory
             / Rozvržení
                 / Skripty
             / Pohledy
                 / Skripty
         / AnotherModule
             ...
     / Skripty

Problém byl v nastavení rozložení skripty na na-základ modul. Odpověď přišla až s použitím Akce Helper. Nastavení rozložení na na-základ modul zahrnuje tři kroky:

  1. Application.ini (nebo podobnou konfiguraci nastavení):
     admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouty / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouty / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / člen / layouty / scripts "affiliate.resources.layout.layoutPath = APPLICATION_PATH" / modules / affiliate / layouty / skripty " 
  2. Vytvořte si svůj Akce Helper:
      <? Php
     / **
      * Nastavuje rozložení cestu na per-modul základě
      *
      * @ Autor Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Od 2010-01-01
      * /
     třída Pro_Controller_Action_Helper_SetLayoutPath
         rozšiřuje Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Nastavuje uspořádání cestu založenou na modulu
          * /
         veřejné funkce preDispatch ()
         {
        	 $ Modul = $ this-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ('zavádění')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ modul] ['zdrojů'] ['layout'] ['layoutPath'])) {
    	             $ = LayoutPath
    	                  $ Config [$ modul] ['zdrojů'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('layout')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. A konečně boostrap akce pomocníka:
      ...
         / **
          * Nastavuje uspořádání skripty na na-základ modul
          * /
         chráněné funkce _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         nový Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

4 Reakce na "Zend Framework Per-Module na základě nastavení"

  1. Behrang říká:

    Ahoj díky za vaše první užitečné cvičení, ale řekněte mi, kde jsem se vytvořit akci pomocníka s názvem souboru čarodějnice?
    behrang

  2. Ahoj Behrang, vytvořit akční pomocník se podle toho jména se vám líbí, mám vlastní 'knihovně' s jmenného prostoru 'Pro'. Dalo by se stejně snadno volat třídu 'SetLayoutPath' a dal to, kde vůbec chcete, za předpokladu, že kód může najít a rozšířit si požadované třídy

  3. Shashi Kanth říká:

    Ahoj, IAM zaměňovat s nastavením modulu zvláštní databázi nastavení ... Má někdo nápad?

  4. Myslím, že by to mohlo být snadno dosaženo usign výše uvedené struktury. Za prvé, vytvoření možnosti v ini soubor podél soubory:

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

    Pak jednoduše vygenerovat připojení k databázi, jak uznáte za vhodné (Zend_Db:: továrna () nebo podobný) a schoval ho v registru, nebo nastavit jako výchozí adaptér, pokud používáte Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Dovolená jeden Namítat













Panorama Téma, které Themocracy

7 návštěvníci online nyní
5 osob, 2 roboty, 0 členů
Max návštěvníků dnes: 9 v 12:05 UTC
Tento měsíc: 26 na 07.05.2011 00:35 UTC
Tento rok: 130 v 28-03-2011 22:40 UTC
Všechny čas: 130 v 28-03-2011 22:40 UTC