Dinámicamente agregar páginas a un recipiente Zend_Navigation en tiempo de ejecución
En una continuación de mi último post sobre Zend_Navigation, solicitudes de ruta para sitemap.xml al controlador personalizado / acción , este post es sobre dymnamically añadir páginas a un contenedor Zend_Navigation en la ejecución del script / tiempo de ejecución.
Su muy bien especificar las páginas en un ini o xml archivo, pero en algún momento vamos a tener cambios en las páginas de su sitio que desee, como parte de un menú, mapa, o para ser incluido en su ruta de navegación. Por lo tanto lo que tenemos que hacer es añadir páginas a nuestro contenedor Zend_Navigation en tiempo de ejecución. Ejemplos de esto sería en la adición de los artículos de noticias, blog, o página de comentarios, etc
En este ejemplo voy a agregar algunos puestos de noticias a mi iniciativa define una configuración. Para obtener noticias de mi página de entrada configuraciones que he usado una clase que devuelve una matriz con el siguiente formato:
$ PagesToAdd = array ( 0 => array ( 'Etiqueta' historia => 'falsa noticia # 5 ...', 'Module' => 'www', 'Ruta' => 'www-index', 'Acción' 'vista' =>, 'Controller' 'noticia' =>, 'Params' => array ( 'Id' => "5-falsa-de noticias pisos - 5 ') ), 1 => array (/ * * Más detalles de la página /), );
Como te darás cuenta de que la función ha devuelto un conjunto en el que figuran las matrices que componen la configuración de las matrices de Zend_Navigation_Page_Mvc. Por lo tanto, recorrer las páginas Zend_Navigation nueva matriz puede ser creado a partir de la matriz de configuración. El siguiente paso, como parte del bucle es agregar las páginas en la posición correcta (o bien las páginas se pueden añadir a granel mediante el uso - addPages> () método).
Para ello, busque la página que desea agregar el sub-páginas y sólo tiene que añadir las páginas. En este caso he utilizado el código siguiente para encontrar a mi página:
$ Por contenedor> findOneBy ('etiqueta', 'Noticias') -> addPage ($ page); Mi inicialización de navegación general en el arranque por lo tanto se parece a esto:
/ ** * Utilizados para la manipulación de navegación de nivel superior * * @ Zend_Navigation retorno * / _initNavigation función protegida () { $ This-> arranque ('layout'); $ Layout = $ this GetResource-> ('layout'); ver = $ $ getView diseño-> (); $ Config = new Zend_Config_Ini ( APPLICATION_PATH. '/ Configs / navigation.ini, APPLICATION_ENV); $ Envase = Zend_Navigation nueva ($ configuración por defecto->); / / Ahora agregue los últimos 25 informes de noticias noticia = $ Noticias nuevo (); = $ $ Páginas getNavigationEntries> noticias (); foreach ($ $ páginas como página) { $ Page = Zend_Navigation_Page_Mvc nueva ($ page); $ Por contenedor> findOneBy ('etiqueta', 'Noticias') -> addPage ($ page); } $ View-> de navegación ($ contenedor); }
En lo que hay que añadir alguna forma de almacenamiento en caché (utilizando Zend_Cache presumiblemente;)) de lo contrario esto va a ser bastante caro con cada carga de la página.


















































Eso es justo lo que estaba buscando - gracias por un ejemplo muy claro. Saludos. G