Zend Framework Per-modul baserte innstillinger
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:
- 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 " - 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); } } } }
- 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 ()); } ...

















































