Zend Framework Per-modul baserad inställningar
Jag har skapat en uppföljning till det här inlägget som kräver mindre konfiguration, se Modul baserad layout - Zend Framework .
När du använder Zend Framework med moduler, dess självklart att om du kör olika (del-) platser från samma program som du inte nödvändigtvis vill ha samma layout skript för varje del. Jag bestämde mig för att gå med på följande webbplats struktur:
/ Ansökan / Controllers ... / Modeller / Moduler / Default / Controllers / Layout / Skript / Visningar / Skript / AnotherModule ... / Skript
Problemet var att inrätta layouten skript på en per-modul basis. Svaret kom genom att använda en handlingsplan Helper. Ställa in layouter på en per-modul grund omfattar tre steg:
- Application.ini (eller liknande konfiguration setup):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouter / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouter / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / layouter / scripts" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouter / scripts"
- Skapa din Action Helper:
<? Php / ** * Ställer layouten väg på en per-modul grundval * * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Sedan 2010/01/01 * / klass Pro_Controller_Action_Helper_SetLayoutPath sträcker Zend_Controller_Action_Helper_Abstract { / ** * Ställer layout väg bygger på modul * / offentlig funktion preDispatch () { $ Modul = $ this-> getRequest () -> getModuleName (); if ($ bootstrap = $ this-> getActionController () -> GetInvokeArg ("bootstrap")) { $ Config = $ bootstrap-> getOptions (); if (isset ($ config [$ module] ['resurser'] ['layout'] ['layoutPath'])) { $ LayoutPath = $ Config [$ module] ['resurser'] ['layout'] ['layoutPath']; $ This-> getActionController () -> GetHelper ("layout") -> SetLayoutPath ($ layoutPath); } } } }
- Och slutligen boostrap åtgärden helper:
... / ** * Ställer upp layouten skript på en per-modul grundval * / skyddad funktion _initLayoutHelper () { $ This-> bootstrap (frontController '); $ Layout = Zend_Controller_Action_HelperBroker:: addHelper ( ny Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Hej först tack för din hjälp tutorial men säg mig var jag skapa handling hjälpare med häxa filnamn?
Behrang
Hej Behrang skapar åtgärden hjälpare med vilket namn du vill, jag har mina egna "bibliotek" med namespace "Pro". Du kan lika gärna kalla klassen "SetLayoutPath" och placera den vart du vill, förutsatt att koden kan hitta det och du förlänga den nödvändiga klasser
Hej, IAM förväxlas med att inrätta modul särskild databas inställningar ... gör någon har en idé?
Jag tror att detta lätt skulle kunna uppnås usign detta mönster. För det första skapar alternativ i din ini-fil längs filer:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Osv ...
Sedan helt enkelt skapa din databas anslutning som du tycker passar (Zend_Db:: fabrik () eller liknande) och stash bort det i registret eller ställa in den som standard adaptern om du använder Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).