Zend Framework por módulo configurações baseadas
Eu criei uma continuação deste post, que requer menos configuração, consulte Módulo Baseado Layout - Zend Framework .
Ao utilizar o Zend Framework com os módulos, a sua evidente que, se você estiver executando vários (sub) sites fora do mesmo aplicativo que você não quer necessariamente os mesmos scripts de layout para cada parte. Eu decidi ir com a estrutura do site a seguir:
/ Aplicação / Controladores ... / Models / Modules / Default / Controladores / Layout / Scripts / Views / Scripts / AnotherModule ... / Scripts
O problema foi a criação de scripts de layout em uma base por módulo. A resposta veio através da utilização de um auxiliar de acção. Configurando o layout em uma base por módulo envolve três passos:
- Application.ini (ou setup de configuração semelhante):
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> * @ Desde 2010/01/01 * / Pro_Controller_Action_Helper_SetLayoutPath classe estende Zend_Controller_Action_Helper_Abstract { / ** * Define o caminho de layout baseado no módulo * / preDispatch função pública () { $ Module GetRequest = $ this-> () -> getModuleName (); if ($ bootstrap getActionController = $ this-> () -> GetInvokeArg ('bootstrap')) { $ Config = $ getOptions bootstrap-> (); if (isset ($ config ['layout'] [$ módulo] ['recursos'] ['layoutPath'])) { LayoutPath $ = $ Config [$ módulo] ['layout'] ['recursos'] ['layoutPath']; getActionController $ this-> () -> GetHelper ('layout') - SetLayoutPath> ($ layoutPath); } } } }
- E, por último inicialize o auxiliar de acção:
... / ** * Configura scripts de layout em uma base por módulo * / _initLayoutHelper função protegida () { $ This-> inicialização ("frontController '); $ Layout = Zend_Controller_Action_HelperBroker: addHelper ( nova Pro_Controller_Action_Helper_SetLayoutPath ()); } ...


















































Oi agradece para o seu primeiro tutorial útil, mas diga-me onde posso criar auxiliar de acção com o nome de arquivo bruxa?
Behrang
Oi Behrang, criar o auxiliar de acção com qualquer nome que você quiser, eu tenho a minha "biblioteca" com espaço próprio 'Pro'. Você poderia facilmente chamar de "SetLayoutPath 'da classe e colocá-lo onde quiser, desde que o código pode encontrá-la e de estender as aulas obrigatórias
Oi, iam confundido com a criação de configurações do módulo de banco de dados específico ... Alguém tem uma idéia?
Acho que isso poderia ser facilmente alcançado usign o padrão acima. Em primeiro lugar, criar opções em seu arquivo ini junto os arquivos:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Etc ...
Depois, basta gerar o seu banco de dados conexão como achar melhor (Zend_Db:: factory () ou similar) e armazená-lo afastado no registro ou defini-lo como o adaptador padrão se estiver usando Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).