Innlegg merket: layoutPath

Zend Framework Per-modul baserte innstillinger

Av , fredag ​​01.01.2010 22:40

Jeg har laget en oppfølger til dette innlegget som krever mindre konfigurasjon, se modulbasert Layout - Zend Framework .

Når du bruker Zend Framework med moduler, dens åpenbare at hvis du kjører forskjellige (sub-) områder av samme applikasjonen du ikke nødvendigvis vil ha de samme tegnsett for hver del. Jeg bestemte meg for å gå med følgende nettsted struktur:

  / Application
     / Kontrollere
         ...
     / Modeller
     / Moduler
         / Default
             / Kontrollere
             / Layout
                 / Scripts
             / Visninger
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Problemet ble å sette opp og tegnsett på en per-modul basis. Svaret kom gjennom ved hjelp av en Handling Helper. Sette opp oppsettene på en per-modul basis involverer tre trinn:

  1. Application.ini (eller lignende konfigurasjonsoppsettet):
     admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / oppsett / skript" default.resources.layout.layoutPath = APPLICATION_PATH "/ moduler / default / oppsett / skript" member.resources.layout.layoutPath = APPLICATION_PATH "/ moduler / medlem / oppsett / skript "affiliate.resources.layout.layoutPath = APPLICATION_PATH" / modules / agent / oppsett / scripts " 
  2. Lag din Handling Helper:
      <? Php
     / **
      * Setter layout banen på en per-modul basis
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Siden 2010-01-01
      * /
     klasse Pro_Controller_Action_Helper_SetLayoutPath
         strekker Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Stiller layout sti basert på modul
          * /
         offentlig funksjon preDispatch ()
         {
        	 $ Modul = $ this-> GetRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ('bootstrap')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ modul] ['ressurser'] ['layout'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ modul] ['ressurser'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('layout')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Og til slutt boostrap handlingen hjelperen:
      ...
         / **
          * Setter opp layout skript på en per-modul basis
          * /
         beskyttet funksjon _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker :: addHelper (
    	         ny Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 












Panorama Theme by Themocracy

4 besøkende online nå
3 gjester, 1 bots, 0 medlemmer
Maks besøkende i dag: 13 ved 08:46 am UTC
Denne måneden: 16 kl 01-05-2012 13:02 UTC
I år: 69 kl 27-02-2012 09:56 am UTC
All time: 130 på 28-03-2011 10:40 UTC