Som en uppföljning till mitt tidigare inlägg per modul baserad layoutinställningar för Zend Framework , jag har uppdaterat koden kräva mindre konfiguration än tidigare (inte för att det krävs mer än några rader i din ansökan konfiguration!).
Fortsätt läsa 'Zend Framework Per Inställningar Modul layout - Uppföljning' »
Artiklarna , Computing , PHP , Webbprogrammering , Zend Framework |
åtgärder , controller , ram , hjälpare , layout , modul , PHP , Zend , Zend Framework
Jag har skapat en uppföljning till denna tjänst som kräver mindre konfiguration, se modulbaserat Layout - Zend Framework .
När du använder Zend Framework med moduler, dess uppenbara att om du kör olika (sub-) sajter av samma program som du inte nödvändigtvis vill ha samma layout skript för varje del. Jag bestämde mig för att gå med på följande webbplats struktur:
/ Application
/ Styrenheter
...
/ Modeller
/ Modules
/ Default
/ Styrenheter
/ Layout
/ Skript
/ Visningar
/ Skript
/ AnotherModule
...
/ Skript
Problemet var att sätta upp layouten skript på en per-modul basis. Svaret kom genom att använda en handlingsplan Helper. Ställa upp layouter på en per-modul grund innebär tre steg:
- Application.ini (eller liknande konfiguration Setup):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouter / script"
default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouter / script"
member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / layouter / script"
affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouter / script"
- Skapa din Åtgärd Helper:
<? Php
/ **
* Ställer layouten vägen på en per-modul basis
*
* @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
* @ Sedan 2010/01/01
* /
klass Pro_Controller_Action_Helper_SetLayoutPath
sträcker Zend_Controller_Action_Helper_Abstract
{
/ **
* Ställer layout vägen baserade på modul
* /
public function preDispatch ()
{
$ Modul = $ this-> GetRequest () -> getModuleName ();
if ($ bootstrap = $ this-> getActionController ()
-> GetInvokeArg ('programladdare')) {
$ Config = $ bootstrap-> getOptions ();
if (isset ($ config [$ module] ['resurser'] ['layout'] ['layoutPath'])) {
$ LayoutPath =
$ Config [$ module] ['resurser'] ['layout'] ['layoutPath'];
$ This-> getActionController ()
-> GetHelper (layout)
-> SetLayoutPath ($ layoutPath);
}
}
}
} - Och till sist boostrap åtgärden helper:
... / *** Ställer in layout skript på en per-modul basis * / protected funktionen _initLayoutHelper () {$ this-> bootstrap (frontController '), $ layout = Zend_Controller_Action_HelperBroker :: addHelper (ny Pro_Controller_Action_Helper_SetLayoutPath ());} .. .