Bilang isang follow up sa aking nakaraang post sa bawat module na nakabatay sa mga setting ng layout para sa Zend Framework , ko na-update ang code sa nangangailangan ng mas mababa ang configuration pagkatapos bago (hindi na ito kinakailangan higit na ng ilang mga linya sa iyong application configuration!).
Magpatuloy sa pagbabasa 'Zend Framework Per sa mga Setting ng Layout ng Module - Sundin Up' »
Artikulo , computing , PHP , Web Programming , Zend Framework |
pagkilos , controller , balangkas , helper , layout , module , PHP , zend , Zend Framework
Ginawa ko ang followup ng sa post na ito kung saan ay nangangailangan ng mas kaunting configuration, mangyaring tingnan ang Module Based Layout - Zend Framework .
Kapag gamit ang zend framework sa module, nito halata na kung ikaw ay nagpapatakbo ng mga iba't-ibang (sub-) site off ang parehong na application ay hindi mo kinakailangang gusto ang parehong mga script ng layout para sa bawat bahagi. Nagpasya kong pumunta sa mga sumusunod na istraktura ng site:
/ Application
/ Controllers
...
/ Modelo
/ Module
/ Default
/ Controllers
/ Layout
/ Script
/ View
/ Script
/ AnotherModule
...
/ Script
Ang problema ay na-set up ang mga script ng layout sa isang per-module na batayan. Sagot ang dumating sa pamamagitan ng paggamit ng isang Action Helper. Pagse-set up ang layout sa isang per-module na batayan ay nagsasangkot ng tatlong hakbang:
- Application.ini (o katulad configuration setup):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ module / admin / layout / script" default.resources.layout.layoutPath = APPLICATION_PATH "/ module / default / layout / script" member.resources.layout.layoutPath = APPLICATION_PATH "/ module / miyembro / layout / script "affiliate.resources.layout.layoutPath = APPLICATION_PATH" / module / affiliate / layout / script "
- Lumikha ng iyong Aksyon Helper:
<? Php
/ **
* Itinatakda ang landas ng layout sa isang per-module na batayan
*
* @ May-akda ng Lloyd Watkin <lloyd@evilprofessor.co.uk>
* @ Dahil 2010/01/01
* /
klase Pro_Controller_Action_Helper_SetLayoutPath
umaabot Zend_Controller_Action_Helper_Abstract
{
/ **
* Sets landas ng layout na batay sa module
* /
preDispatch ng pampublikong function na ()
{
$ Module = $ ito-> getRequest () -> getModuleName ();
kung ($ bootstrap = $ ito-> getActionController ()
-> GetInvokeArg ('sa bootstrap')) {
$ Config = $ bootstrap-> getOptions ();
if (isset ($ config [$ module] ['resources'] ['layout'] ['layoutPath'])) {
$ LayoutPath =
$ Config [$ module] ['resources'] ['layout'] ['layoutPath'];
$ Ito-> getActionController ()
-> GetHelper ('layout')
-> SetLayoutPath ($ layoutPath);
}
}
}
} - At bilang wakas boostrap aksyon helper:
...
/ **
* Sets script ng layout sa isang per-module na batayan
* /
Mga protektadong function na _initLayoutHelper ()
{
$ Ito-> ng bootstrap (ang 'frontController');
$ Layout = Zend_Controller_Action_HelperBroker ang :: addHelper (
ng bagong Pro_Controller_Action_Helper_SetLayoutPath ());
}
...