Pregunta

Mientras que hago encontrar que el marco de PHP Symfony es maravilloso para muchas cosas, estoy encontrando dificultades para crear menús dinámicos fácilmente escalables para un sitio web.

Me pregunto cómo otros desarrolladores Symfony por ahí han abordado esta cuestión. Voy a dar un ejemplo sencillo en cuanto a lo que estoy pidiendo.

Si ir a www.fool.com verá que tuviera una configuración de menú típico. Una lista de categorías con una de ellas es el activo que es de alguna manera destacada con CSS.

¿Cuál sería una buena manera de hacer esto de forma dinámica creada en un proyecto Symfony. Pasar variables de algún tipo de módulo a módulo. Todavía no he encontrado una solución elegante.

¿Fue útil?

Solución

En general, acabo de generar manualmente un conjunto de combinaciones de módulo / acción que desea que aparezca en mi menú. Sería bastante fácil de agarrar esta información de una fuente dinámica (como un archivo de configuración, o una base de datos):

$this->menu = array(
    'Home' => array('default', 'index'),
    'About Us' => array('default', 'aboutUs'),
    'Products' => array('products', 'index')
);

A continuación, utilizo métodos getActionName y getMethodName del controlador para determinar qué elemento en mi menú es el actual:

$this->current = array_search(array($this->getModuleName(), $this->getActionName()), $this->menu);

Entonces puedo iterar sobre $ menú, desde dentro de la plantilla, para construir el menú. Y puedo comparar los elementos con $ actual, para determinar si debería establecer una clase de "actual" en el elemento de menú

  • .

    El ejemplo fool.com que das es un poco más complicado, porque es de dos niveles. En ese caso, usted probablemente querrá estar generando el árbol de menús de una base de datos, tal vez haciendo uso del apoyo conjunto anidado de Propel.

  • Licenciado bajo: CC-BY-SA con atribución
    No afiliado a StackOverflow
    scroll top