Pergunta

Enquanto eu achar que o framework PHP Symfony é maravilhoso para muitas coisas, eu estou encontrando dificuldades para criar menus dinâmicos facilmente escaláveis ??para um site.

Eu estou querendo saber como outros desenvolvedores Symfony lá fora, têm lidado com esta questão. Vou dar um exemplo simples, como o que eu estou pedindo.

Se ir para www.fool.com você vai ver que eles têm uma configuração menu típico. Uma lista de categorias com um deles sendo o único ativo que é, de alguma forma destacada com CSS.

O que seria uma boa maneira de fazer isso dinamicamente criado em um projeto Symfony. Passando variáveis ??de algum tipo de módulo a módulo. Eu ainda não encontrou uma solução elegante.

Foi útil?

Solução

Geralmente, eu apenas construir manualmente uma série de combinações de módulo / ação que eu gostaria de aparecer no meu menu. Seria bastante fácil de agarrar esta informação a partir de uma fonte dinâmica (como um arquivo de configuração, ou um banco de dados):

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

Então, eu uso métodos getActionName e getMethodName do controlador para determinar qual item no meu menu é o atual:

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

Então eu posso iterar $ menu de dentro do modelo, para construir o menu. E eu posso comparar os itens com $ corrente, para determinar se deveria definir uma classe "current" no item de menu

  • .

    O exemplo fool.com você dá é um pouco mais complicado, porque é dois níveis. Nesse caso, você provavelmente gostaria de estar gerando a sua árvore de menu a partir de um banco de dados, talvez fazendo uso do apoio conjunto aninhado de Propel.

  • Licenciado em: CC-BY-SA com atribuição
    Não afiliado a StackOverflow
    scroll top