Aggiungere dinamicamente pagine contenitore Zend_Navigation in fase di runtime

Con Steven Watkin Lloyd , Giovedi 7 Gennaio 2010 22:50

In una continuazione del mio ultimo post su Zend_Navigation, indirizzare le richieste di sitemap.xml al controller custom / azione , questo post è di circa dymnamically aggiungere pagine a un contenitore Zend_Navigation in fase di esecuzione / esecuzione dello script.

Il suo benissimo specificando le pagine in un ini o xml file, ma ad un certo punto si sta andando ad avere pagine cambiando nel vostro sito che si desidera utilizzare come parte di una, sitemap menu, o per essere inclusi nel vostro percorso breadcrumb. Quindi quello che dobbiamo fare è aggiungere pagine al nostro contenitore Zend_Navigation in fase di runtime. Esempi di questo sarebbe in aggiunta notizie, post di blog o pagina dei commenti, ecc

In questo esempio ho intenzione di aggiungere qualche notizia al mio post ini di configurazione definita staticamente. Per avere mie notizie configurazioni pagina del post che ho usato una classe che restituisce un array nel seguente formato:

  $ PagesToAdd = array (
   0 =>
     array (
       'Label' news => 'Fake storia # 5 ...',
       'Modulo' => 'www',
       'Percorso' => 'www-index',
       'Azione' 'vista' =>,
       'Controller' 'News' =>,
       'Params' => array (
           'Id' => "5-Fake-news-story - 5 ')
     ),
   1 =>
     array (/ * * Più pagina dei dettagli /),
  ); 

Come si noterà che la funzione ha restituito un array in cui sono contenute le matrici che compongono l'array di configurazione per Zend_Navigation_Page_Mvc. Pertanto, con loop oltre alle nuove pagine Zend_Navigation array può essere creato dalla configurazione array. La prossima cosa da fare come parte del ciclo è quello di aggiungere alle pagine nella posizione corretta (in alternativa le pagine possono essere aggiunte alla rinfusa utilizzando - addPages> () metodo).

Per effettuare questa operazione, individuare la pagina che si desidera aggiungere le sottopagine di e semplicemente aggiungere le pagine. In questo caso ho usato il codice riportato di seguito per trovare la mia pagina:

  $ Contenitore-> findOneBy ('label', 'Ultime Notizie') -> addPage ($ pagina); 

Il mio inizializzazione di navigazione globale del bootstrap assomiglia quindi questo:

  / **
      * Utilizzato per la manipolazione di navigazione di primo livello
      *
      * @ return Zend_Navigation
      * /
     funzione _initNavigation protetto ()
     {
         $ This-> bootstrap ('layout');
         $ Layout = $ this getResource-> ('layout');
         $ View = $ GetView layout-> ();
         $ Config = new Zend_Config_Ini (
             APPLICATION_PATH.  '/ Config / navigation.ini', APPLICATION_ENV);

         $ = Zend_Navigation nuovo contenitore ($ default config->);
         / / A questo punto aggiungere le ultime 25 notizie
         $ News = News new ();
         $ Pagine = $ getNavigationEntries news-> ();
         foreach ($ pagine AS $ pagina) {
        	 $ Page = Zend_Navigation_Page_Mvc nuovo ($ pagina);
        	 $ Contenitore-> findOneBy ('label', 'Ultime Notizie') -> addPage ($ pagina);
         }
         $ View-> navigazione ($ contenitore);
     } 

Su che cosa deve essere aggiunto è una qualche forma di memorizzazione nella cache (usando Zend_Cache presumibilmente;)) altrimenti questo sta andando essere molto costoso ad ogni caricamento della pagina.

One Response to "in modo dinamico aggiungere pagine al contenitore Zend_Navigation in fase di runtime"

  1. Mr Man ha detto:

    Questo è proprio quello che cercavo - grazie per un esempio molto chiaro. Cheers. G

Lascia un commento













Tema di Panorama Themocracy

5 visitatori online
4 persone, 1 bot, 0 utenti
Max visitatori oggi: 14 alle 03:51 UTC
Questo mese: 26 alle 2011/07/05 12:35 UTC
Questo anno: 130 al 28-03-2011 22:40 UTC
Tutti i tempi: 130 al 28-03-2011 10:40 UTC