Zend Framework Per-Modulul setările de bază
Am creat o urmărire la acest post care necesită o configuraţie mai puţin, vă rugăm să consultaţi Modulul Bazat Aspect - Zend Framework .
Când utilizaţi Zend Framework cu module, este evident că, dacă rulaţi diferite (sub-) site-uri de pe aceeaşi cerere nu doriţi neapărat aceeaşi script aspect pentru fiecare parte. Am decis să merg cu structura site-ului următoarele:
/ Aplicarea / Controlere ... / Modele / Module / Default / Controlere / Layout / Script-uri / Opinii / Script-uri / AnotherModule ... / Script-uri
Problema a fost de înfiinţare a script-uri aspect pe o bază per-modul. Răspunsul a venit prin utilizarea unui Helper de acţiune. Configurarea machete pe o bază per-modul implică trei etape:
- Application.ini (sau setup configuraţie similară):
admin.resources.layout.layoutPath APPLICATION_PATH = "/ module / admin / machete / script-uri" = APPLICATION_PATH default.resources.layout.layoutPath "/ module / default / machete / script-uri" = APPLICATION_PATH member.resources.layout.layoutPath "/ module / membru / machete / script-uri" = APPLICATION_PATH affiliate.resources.layout.layoutPath "/ module / afiliat / machete / script-uri"
- Creaţi-vă de acţiune Helper:
<? Php / ** * Seteaza calea aspect pe o bază per-modul * * @ Autor Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Deoarece 2010-01-01 * / clasa Pro_Controller_Action_Helper_SetLayoutPath extinde Zend_Controller_Action_Helper_Abstract { / ** * Seturi de cale layout bazat pe modul * / preDispatch funcţia publică () { Module = $ getRequest $ this-> () -> getModuleName (); if ($ bootstrap = getActionController $ this-> () -> GetInvokeArg ("bootstrap")) { $ Config = $ getOptions bootstrap-> (); if (isset ($ config ['aspectul'] [$ modul] ['resursele'] ['layoutPath'])) { $ LayoutPath = $ Config [$ modulul] ['layout'] ['resursele'] ['layoutPath']; getActionController $ this-> () -> GetHelper ("layout") - SetLayoutPath> ($ layoutPath); } } } }
- Boostrap şi în cele din urmă helper de acţiune:
... / ** * Seturi de script-uri layout-te pe o bază per-modul * / _initLayoutHelper funcţia protejate () { $ This-> bootstrap ("frontController '); $ Layout = Zend_Controller_Action_HelperBroker:: addHelper ( noi Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Max se multumeasca in primul tutorial util pentru dvs., dar spune-mi unde am crea ajutor de acţiune cu nume de fişier vrăjitoare?
behrang
Bună Behrang, crea ajutor de acţiune cu oricare nume doriţi, am propria mea "biblioteca" cu spaţiul de nume "Pro". Ai putea la fel de uşor de apel "SetLayoutPath" de clasă şi a pus-o vreodată în cazul în care vă place, cu condiţia ca acest cod poate găsi şi va extinde clasele necesare
Bună, iam confundat cu înfiinţarea modul de setări specifice de baze de date ... Are cineva o idee?
Cred că acest lucru ar putea fi uşor de atins usign modelul de mai sus. În primul rând, de a crea opţiuni în fişierul ini de-a lungul fişierele de:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Etc ...
Apoi, pur şi simplu generaţi conexiunea de date ca tu de cuviinţă (Zend_Db:: fabrica de () sau similare) şi ascunde-l departe în registru sau setaţi-o ca adaptorul implicit dacă se utilizează Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).