No seguimento ao meu post anterior sobre as configurações de layout por módulo base para a Zend Framework , eu atualizei o código para exigir menos do que antes de configuração (não que fosse necessário mais que algumas linhas na configuração do aplicativo!).
Continue lendo 'Zend Framework Per configurações de layout Módulo - Follow Up' »
Artigos , Informática , PHP , Programação Web , Zend Framework |
ação , controlador , quadro , ajudante , de layout , módulo , PHP , Zend , Framework Zend
Eu criei uma continuação deste post, que requer menos configuração, consulte Layout de Módulo Baseado - Zend Framework .
Quando utilizar o Zend Framework com os módulos, o seu óbvio que se você estiver executando vários (sub-) sites off a mesma aplicação que você não necessariamente quer o mesmo layout de scripts para cada parte. Eu decidi ir com a estrutura do site a seguir:
/ Aplicação
/ Controllers
...
/ Models
/ Modules
/ Default
/ Controllers
/ Layout
/ Scripts
/ Views
/ Scripts
/ AnotherModule
...
/ Scripts
O problema foi a criação de scripts do layout em uma base por módulo. A resposta veio através da utilização de um auxiliar de acção. Criação de layouts em uma base por módulo envolve três passos:
- Application.ini (ou definição da configuração 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 = "/ modules / member / layouts / scripts"
affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / filial / layouts / scripts"
- Crie o seu ajudante de acção:
<? Php
/ **
* Define o caminho de layout em uma base por módulo
*
* @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
* @ Since 2010/01/01
* /
classe Pro_Controller_Action_Helper_SetLayoutPath
estende Zend_Controller_Action_Helper_Abstract
{
/ **
* Define caminho layout com base no módulo
* /
preDispatch função pública ()
{
$ Module = $ this-> GetRequest () -> getModuleName ();
if (bootstrap $ = $ this-> getActionController ()
-> GetInvokeArg ('bootstrap')) {
$ Config = $ bootstrap-> getOptions ();
if (isset [module $] ($ config ['recursos'] ['layout'] ['layoutPath'])) {
LayoutPath $ =
[Module $] $ config ['recursos'] ['layout'] ['layoutPath'];
$ This-> getActionController ()
-> GetHelper ('layout')
-> SetLayoutPath ($ layoutPath);
}
}
}
} - E por último boostrap o ajudante de ação:
...
/ **
* Define-se scripts de layout em uma base por módulo
* /
protegidos função _initLayoutHelper ()
{
$ This-> bootstrap ('frontController');
$ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
nova Pro_Controller_Action_Helper_SetLayoutPath ());
}
...