Zend Framework Per-Module na základe nastavenia
Vytvoril som reakciu na tento post, ktorý vyžaduje menej konfigurácie, pozri modul založený Layout - Zend Framework .
Pri použití Zend Frameworku s modulmi, ich zjavné, že ak používate rôzne (sub-) miesta mimo rovnaká žiadosť nemusíte nutne chcieť rovnaké rozloženie skripty pre každú časť. Rozhodol som sa ísť s nasledujúce štruktúry webu:
/ Aplikácie / Regulátory ... / Modely / Modules / Default / Regulátory / Rozvrhnutie / Skripty / Pohľady / Skripty / AnotherModule ... / Skripty
Problém bol v nastavení rozloženia skripty na na-základ modul. Odpoveď prišla až s použitím Akcia Helper. Nastavenie rozloženia na na-základ modul zahŕňa tri kroky:
- Application.ini (alebo podobnú konfiguráciu nastavenia):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouty / skripty" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouty / skripty" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / člen / layouty / skripty" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouty / skripty"
- Vytvorte si svoj Akcia Helper:
<? Php / ** * Nastavuje rozloženie cestu na per-modul základe * * @ Autor Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Od 2010-01-01 * / trieda Pro_Controller_Action_Helper_SetLayoutPath rozširuje Zend_Controller_Action_Helper_Abstract { / ** * Nastavuje usporiadanie cestu založenú na module * / verejnej funkcie preDispatch () { $ Modul = $ this-> getRequest () -> getModuleName (); if ($ boot strap = $ this-> getActionController () -> GetInvokeArg ('zavádzanie')) { $ Config = $ boot strap-> getOptions (); if (isset ($ config [$ modul] ['zdrojov'] ['layout'] ['layoutPath'])) { $ = LayoutPath $ Config [$ modul] ['zdrojov'] ['layout'] ['layoutPath']; $ This-> getActionController () -> GetHelper ('layout') -> SetLayoutPath ($ layoutPath); } } } }
- A konečne boostrap akcie pomocníka:
... / ** * Nastavuje usporiadanie skripty na na-základ modul * / chránené funkcie _initLayoutHelper () { $ This-> boot strap ('frontController'); $ Layout = Zend_Controller_Action_HelperBroker:: addHelper ( nový Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Ahoj vďaka za vaše prvé užitočné cvičenie, ale povedzte mi, kde som sa vytvoriť akciu pomocníka s názvom súboru čarodejnice?
behrang
Ahoj Behrang, vytvoriť akčné pomocník sa podľa toho mena sa vám páči, mám vlastné 'knižnici' s menného priestoru 'Pre'. Dalo by sa rovnako ľahko volať triedu 'SetLayoutPath' a dal to, kde vôbec chcete, za predpokladu, že kód môže nájsť a rozšíriť si požadovanej triedy
Ahoj, IAM zamieňať s nastavením modulu osobitnej databáze nastavenia ... Má niekto nápad?
Myslím, že by to mohlo byť ľahko dosiahnuť usign vyššie uvedenej štruktúry. Po prvé, vytvorenie možnosti v ini súbor pozdĺž súbory:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Atd ...
Potom jednoducho vygenerovať pripojenie k databáze, ako uznáte za vhodné (Zend_Db:: továreň () alebo podobný) a schoval ho v registri, alebo nastaviť ako predvolené adaptér, ak používate Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).