Zend Framework Per-Module batay setting
Ako ay gumawa nang isang followup sa post na ito na nangangailangan ng mas kaunting configuration, mangyaring tingnan ang Module Batay Layout - Zend Framework .
Kapag ginagamit ang mga Zend framework sa modules, ang kanyang halata na kung ikaw ay nagpapatakbo ng iba't-ibang (sub-) sites off ang parehong application ay hindi mo kinakailangan na gusto ang parehong mga script layout para sa bawat bahagi. Ako ay nagpasya na pumunta sa mga sumusunod na istraktura ng site:
/ Application / Controllers ... / Modelo / Modules / Default / Controllers / Layout / Script / Views / Script / AnotherModule ... / Script
Ang problema ay set up ang mga script layout sa isang per-module na batayan. Ang sagot ay dumating sa pamamagitan ng paggamit ng isang Action Helper. Pagse-set up ang mga layout sa isang per-module na batayan ay nagsasangkot ng tatlong hakbang:
- Application.ini (o katulad configuration setup):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / templates / layouts / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / miyembro / layouts / scripts" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouts / scripts"
- Lumikha ng iyong Action Helper:
<? Php / ** * Sets ang layout landas sa isang per-module na batayan * * @ Akda Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Since 2010/01/01 * / class Pro_Controller_Action_Helper_SetLayoutPath nagpalawak Zend_Controller_Action_Helper_Abstract { / ** * Sets layout path batay sa module * / pampublikong function preDispatch () { $ Module = $ ito-> getRequest () -> getModuleName (); kung ($ bootstrap = $ ito-> getActionController () -> GetInvokeArg ('bootstrap')) { $ Config = $ bootstrap-> getOptions (); kung (isset ($ config ['layoutPath'] [$ module] ['resources'] ['layout'])) { $ LayoutPath = $ Config [$ module] ['layoutPath'] ['resources'] ['layout']; $ Na ito-> getActionController () -> GetHelper ('layout') -> SetLayoutPath ($ layoutPath); } } } }
- At sa wakas boostrap ang action helper:
... / ** * Sets up scripts layout sa isang per-module na batayan * / protektado function _initLayoutHelper () { $ Na ito-> bootstrap ('frontController'); $ Layout = Zend_Controller_Action_HelperBroker:: addHelper ( bagong Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Hi unang salamat para sa iyong helpful tutorial ngunit sabihin sa akin kung saan gumawa ako action helper sa mangkukulam ng pangalan ng file?
behrang
Hi Behrang, lumikha ng mga action helper sa alinman ang pangalan na gusto mo, mayroon ako ng aking sariling 'library' sa namespace 'Pro'. Ikaw ay maaaring lamang bilang madaling tumawag sa 'SetLayoutPath' sa klase at ilagay ito kung saan man gusto, na ibinigay ng code ay maaaring mahanap ito at palawigin mo ang mga kinakailangang mga klase
Hi, iam nalilito sa set up ng module tiyak na setting ng database ... ay kahit sino ay may isang ideya?
tingin ko ito ay madaling nakakamit usign ang itaas na pattern. Una, lumikha ng mga opsyon sa iyong ini file kasama ang mga file ng:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Etc ...
Pagkatapos lamang ang bumubuo ng iyong database koneksyon bilang na nakikita mo magkasya (Zend_Db:: factory () o katulad) at itago ito sa malayo sa registry o itakda ito bilang default na adapter kung gumagamit ng Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).