Per dare un seguito al mio precedente post su per le impostazioni di layout del modulo base di Zend Framework , ho aggiornato il codice per la configurazione richiedono meno di prima (non che ha richiesto più di poche righe nella configurazione dell'applicazione!).
Continua a leggere 'Zend Framework Per impostazioni di layout Modulo - Follow Up' »
Articoli , Computing , PHP , Programmazione Web , Zend Framework |
azione , del controller , quadro , aiutante , il layout , il modulo , PHP , Zend , Zend Framework
Ho creato un follow-up a questo post, che richiede meno di configurazione, vedere layout basato Modulo - Zend Framework .
Quando si utilizza il framework Zend con i moduli, i suoi ovvio che se si sta eseguendo vari (sub-) siti fuori la stessa applicazione che non necessariamente vogliono lo stesso script di configurazione per ciascuna parte. Ho deciso di andare con la struttura seguente sito:
/ Applicazione
/ Controllori
...
/ Modelli
/ Modules
/ Default
/ Controllori
/ Layout
/ Scripts
/ Views
/ Scripts
/ AnotherModule
...
/ Scripts
Il problema era la configurazione degli script disposizione per ogni singolo modulo base. La risposta è arrivata attraverso l'utilizzo di uno Helper azione. Impostazione del layout per ogni singolo modulo di base prevede tre passaggi:
- Application.ini (o setup di configurazione simile):
admin.resources.layout.layoutPath APPLICATION_PATH = "/ modules / admin / layout / scripts"
default.resources.layout.layoutPath APPLICATION_PATH = "/ modules / default / layout / scripts"
member.resources.layout.layoutPath APPLICATION_PATH = "/ modules / member / layout / scripts"
affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / affiliati / layout / scripts"
- Crea il tuo Helper Azione:
<? Php
/ **
* Imposta il percorso del layout per ogni singolo modulo base
*
* @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
* @ Dal 2010/01/01
* /
classe Pro_Controller_Action_Helper_SetLayoutPath
estende Zend_Controller_Action_Helper_Abstract
{
/ **
* Imposta il percorso del layout basato sul modulo
* /
preDispatch funzione pubblica ()
{
$ Module = $ this-> getRequest () -> getModuleName ();
if ($ bootstrap = $ this-> getActionController ()
-> GetInvokeArg ('bootstrap')) {
$ Config = $ bootstrap-> GetOptions ();
if (isset ($ config [$ module] ['risorse'] ['layout'] ['layoutPath'])) {
$ LayoutPath =
[Modulo $] $ config ['risorse'] ['layout'] ['layoutPath'];
$ This-> getActionController ()
-> GetHelper ('layout')
-> SetLayoutPath ($ layoutPath);
}
}
}
} - E infine bootstrap l'helper di azione:
...
/ **
* Imposta gli script di configurazione per ogni singolo modulo base
* /
funzione protetta _initLayoutHelper ()
{
$ This-> bootstrap ('frontController');
$ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
nuovo Pro_Controller_Action_Helper_SetLayoutPath ());
}
...