Dinamikusan hozzá oldalakat Zend_Navigation konténer futásidőben

Által Steven Lloyd Watkin , Január 7. Csütörtök 2010 22:50

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.

6 Válasz-hoz "dinamikus hozzá oldalakat Zend_Navigation konténer futásidőben"

  1. Mr ember azt mondja:

    Ez az, amit kerestem - köszönhetően egy igazán jó példa. Egészségedre. G

  2. A387 mondja:

    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! ;)

    • Steven Lloyd Watkin azt mondja:

      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.

      • A387 mondja:

        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.

  3. Steven Lloyd Watkin azt mondja:

    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.

Hagy egy Válaszol













Panoráma téma Themocracy

5 online látogató jelenleg
4 vendég, 1 bot, 0 tag
Max. látogatók ma: 11., 02:18 UTC
Ebben a hónapban: 22., 2011/08/06 12:30 UTC
Ebben az évben: 130 at 28-03-2011 22:40 UTC
Az összes idő: 130 at 28-03-2011 10:40 UTC