Aggiungere dinamicamente pagine contenitore Zend_Navigation in fase di runtime
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.


















































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