Adauga dinamic de pagini la container Zend_Navigation la runtime

Prin Watkin Lloyd Steven , joi 07 ianuarie 2010 22:50

Într-o continuare pe ultimul meu post despre Zend_Navigation, cereri Route pentru sitemap.xml la controlor personalizate / acţiune , acest post este despre adăugarea dymnamically pagini într-un container Zend_Navigation la script-ul de executie / runtime.

Acesteia, toate bine şi bună specificând paginile dvs. într-o ini sau XML dosar, dar la un moment dat ai de gând să aibă pagini de schimbare în site-ul dvs. pe care doriţi ca parte a unui meniu, sitemap, sau pentru a fi incluse în breadcrumb traseu dumneavoastră. Prin urmare, ceea ce trebuie să facem este să adăugaţi pagini la container Zend_Navigation nostru la runtime. Exemple pentru acest lucru ar fi în adăugarea de ştiri, blog, sau pagina de comentarii, etc

În acest exemplu am de gând să adăuga unele posturi de ştiri pentru a ini-mi definită static de configurare. Pentru a obţine meu post configuraţii de ştiri de start, am folosit o clasa care returneaza un array în următorul format:

  $ PagesToAdd = array (
   0 =>
     array (
       'Eticheta' => 'Fake ştire # 5 ...',
       'Modulul' => "www",
       'Ruta' => 'www-index ",
       "Acţiune" 'vedere' =>,
       "Operator" 'Ştiri' =>,
       'Params' => array (
           'Id' => "5-Fake-news-poveste - 5 ')
     ),
   1 =>
     array (/ * Mai multe pagina de detalii * /),
  ); 

După cum veţi observa că funcţia a revenit o matrice în care sunt cuprinse matrice care alcătuiesc config arrays pentru Zend_Navigation_Page_Mvc. Prin urmare, prin looping peste paginile matrice Zend_Navigation noi pot fi create din matrice de configurare. Următorul lucru de făcut, ca parte a buclei este de a adăuga pagini în poziţia corectă (alternativ pagini pot fi adăugate în vrac, prin utilizarea - addPages> () metoda).

Pentru a face acest lucru, localizaţi pagina pe care doriţi să adăugaţi sub-pagini pentru a adăuga şi pur şi simplu pagini. În acest caz, am folosit următorul cod pentru a găsi pagina mea:

  $ Container-> findOneBy ("etichetă", "Latest News") -> addPage ($ pagina); 

iniţializare meu de navigaţie globală în bootstrap, prin urmare, arată astfel:

  / **
      * Utilizate pentru manipularea de top la nivel de navigare
      *
      * @ Return Zend_Navigation
      * /
     _initNavigation funcţia protejate ()
     {
         $ This-> bootstrap ("layout");
         $ Layout = $ this getResource-> ("layout");
         $ Vedere = $ getView layout-> ();
         $ Config = new Zend_Config_Ini (
             APPLICATION_PATH.  '/ Configs / navigation.ini ", APPLICATION_ENV);

         $ Container = Zend_Navigation noi ($ implicit config->);
         / / Acum, adăugaţi în ultimii 25 de ştiri
         = $ Ştiri Ştiri noi ();
         $ Pagini = $ getNavigationEntries ştiri-> ();
         foreach ($ pagini AS $ pagina) {
        	 $ Page = Zend_Navigation_Page_Mvc noi ($ pagina);
        	 $ Container-> findOneBy ("etichetă", "Latest News") -> addPage ($ pagina);
         }
         $ View-> navigare ($ container);
     } 

Lucru pe care trebuie să fie adăugată este o formă de caching (folosind Zend_Cache probabil;)) în caz contrar aceasta va fi destul de scump cu fiecare încărcare a paginilor.

One Response to "adăuga dinamic pagini la container Zend_Navigation la runtime"

  1. Domnul Man spune:

    Asta e doar ceea ce am fost în căutarea - multumesc pentru un exemplu foarte clar. Noroc. G

Plecare un Reply













Panorama Tematica de Themocracy

8 vizitatori online acum
4 persoane, 4 impotriva, 0 membri
Max vizitatori azi: 13 la 11:17 UTC
În această lună: 26 la 07-05-2011 12:35 UTC
În acest an: 130 la 28-03-2011 22:40 UTC
Tot timpul: 130 la 28-03-2011 10:40 UTC