Question

Alors que je trouve que le framework PHP Symfony est merveilleux pour beaucoup de choses, je trouve qu'il est difficile de créer des menus dynamiques facilement évolutifs pour un site web.

Je me demande comment les autres développeurs Symfony là-bas ont abordé cette question. Je vais donner un exemple simple de ce que je demande.

Si aller à www.fool.com, vous verrez qu'ils ont une configuration de menu typique. Une liste des catégories avec un d'entre eux étant celui actif qui est en quelque sorte mis en évidence avec CSS.

Quelle serait une bonne façon de faire de cette dynamique créée dans un projet Symfony. Passer des variables d'une sorte de module à l'autre. Je ne l'ai pas encore trouvé une solution élégante.

Était-ce utile?

La solution

En général, je viens de créer manuellement un tableau de combinaison de modules / d'action que je voudrais apparaître dans mon menu. Il serait assez facile de saisir cette information d'une source dynamique (comme un fichier de configuration, ou une base de données):

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

Alors, j'utilise les méthodes getActionName et getMethodName du contrôleur pour déterminer quel élément dans mon menu est le courant un:

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

Ensuite, je peux parcourir le menu $, à partir du modèle, pour construire le menu. Et je peux comparer les articles avec un courant de $, pour déterminer si je définir une classe « courant » sur

  • de l'élément de menu.

    L'exemple fool.com que vous donnez est un peu plus compliqué, car il est à deux niveaux. Dans ce cas, vous voulez probablement être la génération de votre arborescence de menus à partir d'une base de données, ce qui peut-être utiliser l'appui ensemble imbriqué Propel.

  • Licencié sous: CC-BY-SA avec attribution
    Non affilié à StackOverflow
    scroll top