Com a continuació al meu post anterior sobre la configuració de cada mòdul de disseny basats en Zend Framework , he actualitzat el codi de configuració requereixen menys que abans (no és que es requereix més que unes poques línies en la configuració de l'aplicació!).
Enviar 'Zend Framework per ajustos de disseny del mòdul - Seguiment' »
Articles , Informàtica , PHP , Programació Web , Zend Framework |
l'acció , control , marc , ajuda , disseny , mòdul , PHP , Zend , Zend Framework
He creat una resposta a aquest càrrec que requereix menys configuració, consulteu Disseny basat en el mòdul - Zend Framework .
Quan s'utilitza el Zend Framework amb els mòduls, és obvi que si s'està executant diverses (sub-) els llocs de la mateixa aplicació que no necessàriament volen les mateixes seqüències d'ordres de disseny per a cada part. Em vaig decidir a anar amb l'estructura següent lloc web:
/ Aplicació
O els controladors
...
O els models
/ Modules
/ Default
O els controladors
/ Disseny
/ Scripts
O punts de vista
/ Scripts
/ AnotherModule
...
/ Scripts
El problema va ser la creació dels guions de disseny en funció de cada mòdul. La resposta va arribar mitjançant l'ús d'un ajudant d'acció. La creació dels dissenys en funció de cada mòdul consta de tres passos:
- Application.ini (o la configuració de configuració similar):
admin.resources.layout.layoutPath APPLICATION_PATH = "/ modules / admin / layouts / scripts"
default.resources.layout.layoutPath APPLICATION_PATH = "/ modules / default / layouts / scripts"
member.resources.layout.layoutPath APPLICATION_PATH = "/ mòduls / member / layouts / scripts"
affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / afiliats / layouts / scripts"
- Crea un ajudant d'acció:
<? Php
/ **
* Estableix la ruta de distribució en funció de cada mòdul
*
* @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
* @ Since 2010.01.01
* /
classe Pro_Controller_Action_Helper_SetLayoutPath
s'estén Zend_Controller_Action_Helper_Abstract
{
/ **
* Jocs de ruta d'un disseny basat en el mòdul
* /
preDispatch funció pública ()
{
$ Module = $ this-> getRequest () -> getModuleName ();
if ($ arrencada = $ this-> getActionController ()
-> GetInvokeArg ('arrencada')) {
$ Config = $ arrencada-> getOptions ();
if (isset ($ config [$ mòdul] ['recursos'] ['layout'] ['layoutPath'])) {
$ LayoutPath =
[Mòdul $] $ config ['recursos'] ['layout'] ['layoutPath'];
$ This-> getActionController ()
-> GetHelper ('layout')
-> SetLayoutPath ($ layoutPath);
}
}
}
} - I, finalment boostrap l'ajudant d'acció:
...
/ **
* Estableix els guions de disseny en funció de cada mòdul
* /
protegida _initLayoutHelper function ()
{
$ This-> arrencada ('frontController');
$ Layout = Zend_Controller_Action_HelperBroker :: addHelper (
nova Pro_Controller_Action_Helper_SetLayoutPath ());
}
...