Zend Framework Per-modul baserte innstillinger
Jeg har opprettet en oppfølging til dette innlegget som krever mindre konfigurasjon, se Modul Basert Layout - Zend Framework .
Når du bruker Zend Framework med moduler, dens åpenbare at hvis du kjører forskjellige (sub-) sider av samme program du ikke nødvendigvis vil ha samme layout scripts for hver del. Jeg bestemte meg for å gå med følgende nettsted struktur:
/ Application / Kontrollører ... / Modeller / Moduler / Default / Kontrollører / Layout / Scripts / Visninger / Scripts / AnotherModule ... / Scripts
Problemet var å sette opp layout skript på en per-modul basis. Svaret kom ved hjelp av en handling Helper. Sette opp oppsett på en per-modul basis involverer tre trinn:
- Application.ini (eller lignende konfigurasjon setup):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / oppsett / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / oppsett / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / medlem / oppsett / scripts" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / oppsett / scripts"
- Lag din Action 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 { / ** * Setter layout banen basert på modulen * / 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 ( nye Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Hei første takk for nyttig tutorial, men si meg hvor jeg lage action helper med hekse filnavn?
behrang
Hei Behrang, lage handlingen hjelperen med hvilken tittel du vil ha, jeg min egen "bibliotek" med namespace "Pro". Du kunne like gjerne ringe klassen 'SetLayoutPath "og sette den hvor du vil, forutsatt at koden kan finne det og du utvide de nødvendige klassene
Hei, iam forveksles med å sette opp modul bestemt database innstillinger ... har noen en idé?
Jeg tror dette kan lett oppnås usign ovennevnte mønsteret. For det første, lage alternativer i ini-fil sammen filene til:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Etc ...
Så bare genererer databasen forbindelsen som det passer deg (Zend_Db:: fabrikk () eller lignende) og stash den bort i registeret, eller angi det som standard adapteren hvis du bruker Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).