Dinamikusan hozzá oldalakat Zend_Navigation konténer futásidőben
A folytatása az utolsó utáni mintegy Zend_Navigation, Route kérelmeket sitemap.xml az egyéni controller / action , ez a post arról szól, dymnamically oldalak hozzáadása egy Zend_Navigation tartályt runtime / szkript futását.
Az mind szép és jó meghatározza az oldalakat egy ini vagy xml fájlt, de egy bizonyos ponton mész, hogy a változó oldalai kívánt részeként egy menü, oldaltérkép, vagy fel kell venni a nyomvonal morzsa. Ezért mit kell tennünk a hozzá oldalakat a Zend_Navigation konténer futásidőben. Példák erre lenne hozzá hírek, blogbejegyzések, vagy oldal észrevételek, stb
Ebben a példában fogok, hogy adjunk néhány álláshely hírek, hogy az én statikusan definiált ini config. Ahhoz, hogy a hírek utáni oldalon konfigurációk én is használtam egy osztályt, amely egy tömbbel tér vissza a következő formában:
$ PagesToAdd = array ( 0 => array ( 'Címke' => 'Fake hírt # 5 ...', 'Modul' => 'www', 'Útvonal' => 'www-index ", "Akció" => "nézet", "Adatkezelő" => "hírek", 'Params' => array ( 'Id' => "5-Fake-news-történet - 5 ') ), 1 => array (/ * További részletek * oldal /), );
Ahogy észre fogod venni, hogy a funkció visszatért egy tömb, amely tartalmazza tömböket alkotó config tömbök Zend_Navigation_Page_Mvc. Ezért, a looping mint a tömb új Zend_Navigation oldalakat lehet létrehozni a config tömb. A következő dolog részeként a hurok, hogy hozzá az oldalt a megfelelő helyzetbe (vagylagosan oldalakat lehet adni ömlesztve segítségével -> addPages () metódus).
Ehhez keresse meg az oldal hozzáadni kívánt az al-oldalakat, és egyszerűen hozzá az oldalakat. Ebben az esetben én használtam ki a következő kódot találni az oldalamon:
$ Konténer-> findOneBy ("címke", "Legfrissebb hírek") -> addPage ($ oldal); Saját általános navigációs inicializáló a bootstrap tehát így néz ki:
/ ** * Kezelésére használták felső szintű navigáció * * @ Vissza Zend_Navigation * / védett funkció _initNavigation () { $ This-> bootstrap ("elrendezés"); $ Layout = $ this-> getResource ("elrendezés"); $ View = $ layout-> getView (); $ Config = new Zend_Config_Ini ( APPLICATION_PATH. "/ Configs / navigation.ini ', APPLICATION_ENV); $ Konténer = new Zend_Navigation ($ config-> alapértelmezett); / / Most add az elmúlt 25 híradások $ News = új hírek (); $ Oldal = $ news-> getNavigationEntries (); foreach ($ oldal AS $ oldal) { $ Page = új Zend_Navigation_Page_Mvc ($ oldal); $ Konténer-> findOneBy ("címke", "Legfrissebb hírek") -> addPage ($ oldal); } $ View-> navigáció ($ konténer); }
Be dolog, hogy kell hozzá valamilyen formában cache (a Zend_Cache feltehetően;)) egyébként ez lesz elég drága, minden oldal terhelés.


















































Ez az, amit kerestem - köszönhetően egy igazán jó példa. Egészségedre. G
Szép post! Én már valami baj kezdeményező modell osztály a bootstrap. Minden nyom miért application / modell osztályok nem állnak rendelkezésre a bootstrap? Az osztály az úgynevezett "új hírek ()", ahelyett, szeretném felvenni a navigációs oldalak szerzés egy navigációs fát egy modell osztály. Ha van ötlete, kérem tudassa velem! ;)
Saját modellt szerkesztette a post, a helyes név a kódot Pro_News, és felvette a Autoloader.
Találgatás éppen nem használja modulokat? De ha így a modellt kell hívni _News a ZF, hogy vegye fel az alapértelmezett (nem használom ezt a rendszert magam).
Én javaslom ellenőrzésére is útvonalat a bootstrap módszer, hogy ha nem tartalmaz "application / modell" vagy annak tartalmaznia kell az állományt kézzel.
Hát én használhatsz olyan modulokat, az én hibám. De azt javaslom autoloadinggal kell működnie? Nos, hogy beleveti magát, hogy egy kicsit mélyebbre. Abban a pillanatban használja a addPage funkció a BaseControllers, ami nem igazán a teljesítmény barát ... hehe. Köszönöm a választ.
Győződjön meg arról, modul modell neve megfelelő-e _News (Például), és meg kell felvenni segítségével autoloadinggal.
Saját modellt szerkesztette a post, a helyes név a kódot Pro_News, és felvette a Autoloader.
Találgatás éppen nem használja modulokat? De ha így a modellt kell hívni _News A ZF, hogy vegye fel az alapértelmezett (nem használom ezt a rendszert magam).
Én javaslom ellenőrzésére is útvonalat a bootstrap módszer, hogy ha nem tartalmaz "application / modell" vagy annak tartalmaznia kell az állományt kézzel.