Som en opfølgning på mit tidligere indlæg per modul baseret layout indstillinger for Zend Framework , jeg har opdateret koden til at kræve mindre konfiguration end før (ikke at det krævede mere end et par linjer i din ansøgning konfiguration!).
Fortsæt læsning 'Zend Framework Per Modul Layout Indstillinger - Follow Up' »
Artikler , Computing , PHP , web-programmering , Zend Framework |
handling , controller , rammer , hjælper , layout , modul , PHP , Zend , Zend Framework
Jeg har oprettet en opfølgning til dette indlæg, som kræver mindre konfiguration, se Modul baseret layout - Zend Framework .
Ved brug af Zend Framework med moduler, dens indlysende, at hvis du kører forskellige (sub-) steder fra samme program, du ikke nødvendigvis vil have samme layout scripts for hver del. Jeg besluttede at gå med følgende websted struktur:
/ Anvendelse
/ Controllere
...
/ Modeller
/ Moduler
/ Default
/ Controllere
/ Layout
/ Scripts
/ Visninger
/ Scripts
/ AnotherModule
...
/ Scripts
Problemet var at oprette layoutet scripts på en per-modul basis. Svaret kom igennem ved hjælp af en Handling Helper. Opsætning af layout på en per-modul grundlag omfatter tre trin:
- Application.ini (eller lignende konfiguration opsætning):
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 / Medlem / layout / scripts"
affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layout / scripts"
- Opret din Handling Helper:
<? Php
/ **
* Sætter layoutet sti på en per-modul grundlag
*
* @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
* @ Siden 2010/01/01
* /
klasse Pro_Controller_Action_Helper_SetLayoutPath
udvider Zend_Controller_Action_Helper_Abstract
{
/ **
* Indstiller layout vej baseret på modul
* /
offentlig funktion preDispatch ()
{
$ Modul = $ this-> GetRequest () -> getModuleName ();
if ($ bootstrap = $ this-> getActionController ()
-> GetInvokeArg ('bootstrap')) {
$ Config = $ bootstrap-> getOptions ();
if (isset ($ config [$ modul] ['ressourcer'] ['Layout'] ['layoutPath'])) {
$ LayoutPath =
$ Config [$ modul] ['ressourcer'] ['Layout'] ['layoutPath'];
$ This-> getActionController ()
-> GetHelper ('Layout')
-> SetLayoutPath ($ layoutPath);
}
}
}
} - Og endelig boostrap handlingen hjælper:
...
/ **
* Indstiller op layoutet scripts på en per-modul grundlag
* /
beskyttet funktion _initLayoutHelper ()
{
$ This-> bootstrap ('frontController');
$ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
nye Pro_Controller_Action_Helper_SetLayoutPath ());
}
...