Dinámicamente agregar páginas a un recipiente Zend_Navigation en tiempo de ejecución

Por Lloyd Watkin Steven , jueves 07 de enero 2010 22:50

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.

Una respuesta a "Agregar dinámicamente páginas a un recipiente Zend_Navigation en tiempo de ejecución"

  1. Sr. El hombre dice:

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

Deja una respuesta













Panorama Tema por Themocracy

8 visitantes en línea ahora
4 personas, contra los robots de 4, 0 miembros
Número máximo de visitantes de hoy: 13 a las 11:17 UTC
Este mes: 26 a 05/07/2011 12:35a.m. UTC
Este año: 130 en 28-03-2011 22:40 UTC
Todo el tiempo: 130 en 28-03-2011 22:40 UTC