Zend Framework Per-Module na základě nastavení
Vytvořil jsem reakci na tento post, který vyžaduje méně konfigurace, viz modul založený Layout - Zend Framework .
Při použití Zend Frameworku s moduly, jejich zjevné, že pokud používáte různé (sub-) místa mimo stejná žádost nemusíte nutně chtít stejné rozložení skripty pro každou část. Rozhodl jsem se jít s následující struktury webu:
/ Aplikace / Regulátory ... / Modely / Modules / Default / Regulátory / Rozvržení / Skripty / Pohledy / Skripty / AnotherModule ... / Skripty
Problém byl v nastavení rozložení skripty na na-základ modul. Odpověď přišla až s použitím Akce Helper. Nastavení rozložení na na-základ modul zahrnuje tři kroky:
- Application.ini (nebo podobnou konfiguraci nastavení):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouty / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouty / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / člen / layouty / scripts "affiliate.resources.layout.layoutPath = APPLICATION_PATH" / modules / affiliate / layouty / skripty " - Vytvořte si svůj Akce Helper:
<? Php / ** * Nastavuje rozložení cestu na per-modul základě * * @ Autor Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Od 2010-01-01 * / třída Pro_Controller_Action_Helper_SetLayoutPath rozšiřuje Zend_Controller_Action_Helper_Abstract { / ** * Nastavuje uspořádání cestu založenou na modulu * / veřejné funkce preDispatch () { $ Modul = $ this-> getRequest () -> getModuleName (); if ($ bootstrap = $ this-> getActionController () -> GetInvokeArg ('zavádění')) { $ Config = $ bootstrap-> getOptions (); if (isset ($ config [$ modul] ['zdrojů'] ['layout'] ['layoutPath'])) { $ = LayoutPath $ Config [$ modul] ['zdrojů'] ['layout'] ['layoutPath']; $ This-> getActionController () -> GetHelper ('layout') -> SetLayoutPath ($ layoutPath); } } } }
- A konečně boostrap akce pomocníka:
... / ** * Nastavuje uspořádání skripty na na-základ modul * / chráněné funkce _initLayoutHelper () { $ This-> bootstrap ('frontController'); $ Layout = Zend_Controller_Action_HelperBroker:: addHelper ( nový Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Ahoj díky za vaše první užitečné cvičení, ale řekněte mi, kde jsem se vytvořit akci pomocníka s názvem souboru čarodějnice?
behrang
Ahoj Behrang, vytvořit akční pomocník se podle toho jména se vám líbí, mám vlastní 'knihovně' s jmenného prostoru 'Pro'. Dalo by se stejně snadno volat třídu 'SetLayoutPath' a dal to, kde vůbec chcete, za předpokladu, že kód může najít a rozšířit si požadované třídy
Ahoj, IAM zaměňovat s nastavením modulu zvláštní databázi nastavení ... Má někdo nápad?
Myslím, že by to mohlo být snadno dosaženo usign výše uvedené struktury. Za prvé, vytvoření možnosti v ini soubor podél soubory:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Atd ...
Pak jednoduše vygenerovat připojení k databázi, jak uznáte za vhodné (Zend_Db:: továrna () nebo podobný) a schoval ho v registru, nebo nastavit jako výchozí adaptér, pokud používáte Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).