Zend Framework Per-modul baseret indstillinger
Jeg har oprettet en opfølgning til dette indlæg, som kræver mindre konfiguration, se Modul baseret layout - Zend Framework .
Når du bruger Zend ramme med moduler, dens indlysende, at hvis du kører forskellige (sub-) lokaliteter ud for samme program, som du ikke nødvendigvis ønsker det samme layout scripts for hver del. Jeg besluttede at gå med følgende websted struktur:
/ Anvendelse / Controllere ... / Modeller / Moduler / Default / Controllere / Layout / Scripts / Visninger / Scripts / AnotherModule ... / Scripts
Problemet var at oprette layoutet scripts på en per-modul basis. Svaret kom igennem ved hjælp af en handlingsplan Helper. Opsætning af layout på en per-modul grundlag består af tre trin:
- Application.ini (eller lignende konfiguration setup):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layout / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layout / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / medlem / layout / scripts" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layout / scripts"
- Skab dit Action Helper:
<? Php / ** * Sætter layout sti på en per-modul grundlag * * @ Forfatter Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Da 2010/01/01 * / klasse Pro_Controller_Action_Helper_SetLayoutPath udvider Zend_Controller_Action_Helper_Abstract { / ** * Sætter layout sti baseret på modul * / offentlig funktion preDispatch () { $ Modul = $ this-> GetRequest så () -> getModuleName (); if ($ bootstrap = $ this-> getActionController () -> GetInvokeArg ('bootstrap')) { $ Config = $ bootstrap-> getOptions (); if (isset ($ config [$ modul] ['ressourcer'] ['layout'] ['layoutPath'])) { $ LayoutPath = $ Config [$ modul] ['ressourcer'] ['layout'] ['layoutPath']; $ This-> getActionController () -> GetHelper ('Layout') -> SetLayoutPath ($ layoutPath); } } } }
- Og endelig boostrap aktionen helper:
... / ** * Indstiller layout scripts på en per-modul grundlag * / beskyttet funktion _initLayoutHelper () { $ This-> bootstrap ('frontController'); $ Layout = Zend_Controller_Action_HelperBroker: addHelper ( ny Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Hej første tak for Deres hjælpsomme tutorial, men fortæl mig, hvor jeg oprette handling hjælper med heks filnavn?
behrang
Hej Behrang, skabe handling hjælperen med uanset hvilken navn du kan lide, jeg har min egen 'bibliotek' med navneområdet 'Pro'. Du kunne lige så godt kalde klassens SetLayoutPath «og sætte det hvorhen du vil, forudsat at koden kan finde det, og du udvide krævede klasser
Hej, IAM forveksles med oprettelsen modul særlig database indstillinger ... nogen der har en idé?
Jeg tror, at dette kunne nemt ske usign ovennævnte mønster. For det første skaber muligheder i din ini-filen langs filer:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Etc ...
Så bare generere din database forbindelse, som du ønsker det (Zend_Db: fabrik () eller lignende) og stash det væk i registreringsdatabasen eller indstille den som standard adapteren, hvis du bruger Zend_Db_Table (Zend_Db_Table: setDefaultAdapter ()).