Zend Framework Per modul elrendezés beállításai - Nyomon követés
Ennek nyomán a korábbi post-án egy modul alapú elrendezés beállítások a Zend Framework , már frissíteni a kódot igényel kevesebb konfigurációt, akkor az előbb (nem szükséges, hogy több mint egy pár sort kell az alkalmazás konfigurációs!).
Ismét igénybe a Zend Controller Action Helper hivatkozik, hogy a bootstrap az alábbiak szerint:
/ **
* Beállítja elrendezés szkriptek egy-egy modul alapján
* /
védett funkció _initLayoutHelper ()
{
$ This-> bootstrap ("frontController ');
$ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
új Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
}
Majdnem pontosan ugyanaz, mint előtte, kivéve ezúttal át az állandó APPLICATION_PATH a kivitelező, mint a mi alap útvonalat.
Ezután a vezérlő tevékenységének segítő magát most a következőképpen néz ki:
/ ** * Megadja az elrendezési út egy-egy modul alapján * * @ author Lloyd Watkin * @ * @ 16/02/2010 óta csomag Pro * @ subpackage Controller_Action_Helper * / / ** * Megadja az elrendezési út egy-egy modul alapján * * @ author Lloyd Watkin * @ * @ 16/02/2010 óta csomag Pro * @ subpackage Controller_Action_Helper * / class Pro_Controller_Action_Helper_SetLayoutPath kiterjeszti Zend_Controller_Action_Helper_Abstract {/ ** * * * Base utat @ var string * / protected $ _path; / * * * * * Construct @ param string $ path * / public function __construct ($ path) {$ this-> setBasePath ($ path);} / ** * Set alap útvonal * * @ param string $ path * / public function setBasePath ($ path) {if (! is_string ($ path) | | empty ($ path)) {dobja új kivétel ("Kivételt string base path");} $ this-> _path = $ path;} / ** * Szerezd meg a bázis utat * * @ return string * / védett funkció _getBasePath () {if (is_null ($ this-> _path)) {if (! meghatározott ("APPLICATION_PATH ')) {dobja új Kivétel (a továbbiakban: Base útvonalat nem lehet határozza meg ");} $ this-> _path = APPLICATION_PATH;} return $ this-> _path;} / ** * Megadja elrendezés alapuló út modul * / public function preDispatch () {$ module = preg_replace (" / [^ AZ ] / i ','', $ this-> getRequest () -> getModuleName ()); if ($ bootstrap = $ this-> getActionController () -> getInvokeArg ("bootstrap")) {$ view = $ bootstrap- > getResource ("nézet"); $ layoutPath = $ this-> _getBasePath (). "/ Modules / {$ modul} / layouts / scripts /"; / * Ha elrendezés könyvtár létezik, akkor kell alkalmazni, különben csak esik * vissza az alapértelmezett * / if (is_dir ($ layoutPath)) {$ this-> getActionController ( ) -> getHelper ("elrendezés") -> setLayoutPath ($ layoutPath); $ view-> headLink () -> appendStylesheet ("/ stílusok / {$ modul} / style.css");}}}}
Megjegyzés: A múlásával mi alap útvonal (vö. APPLICATION_PATH) a kivitelező, mi is a getter és setter az alap útvonalat. Ellentétben a korábbi verzióját a kódot, ha az elrendezés elérési út nem létezik, akkor a kód esik vissza az alapértelmezett elrendezés elérési utat. Ha az alap útvonal nem állította, hogy megpróbálja meghatározni az alap útvonal állandó APPLICATION_PATH, ellenkező esetben kivételt dobni. Én is szemtelenül dobott egy modul alapú stíluslap a jó intézkedés
A modul alapú layout kerül meghatározásra, hogy az elrendezés script útvonal létezik (természetesen ez a módszer lehet változtatni könnyen). Ez adjunk hozzá egy kevés fölött a application.ini setup (ha azonban az elrendezés útvonal létezik PHP cache lesz az eredmény a teljesítmény *), de cserébe nyersz a kényelem a könnyebben esett az új modulok.
Ennyi, nem sokban különbözik, de nem kell egy új konfiguráció bejegyzést minden alkalommal szeretne hozzáadni egy új modult:)
* Ahhoz, hogy tiszta a gyorsítótár (ha szükséges) használja a clearstatcache funkciót.


















































Szia, legyen szíves mondja meg, hol létrehozni osztályt Pro_Controller_Action_Helper_SetLayoutPath amellyel fájlnév
Én vagyok newbie a Zend.
köszönöm
Szia Behrang, hozzon létre a cselekvés segítőnk melyik név tetszik, van saját "könyvtár" a névtér "Pro". Te is ugyanolyan könnyen hívja az osztály "SetLayoutPath", és tedd, ahol valaha is tetszik, feltéve, hogy a kódot megtalálja, és kiterjeszti a szükséges osztályok