Вопрос

Хотя я считаю, что PHP Symfony прекрасно справляется со многими задачами, мне сложно создавать легко масштабируемые динамические меню для веб-сайта.

Мне интересно, как другие разработчики Symfony справились с этой проблемой.Я приведу простой пример того, о чем я спрашиваю.

Если зайти на www.fool.com, вы увидите, что у них типичная настройка меню.Список категорий, одна из которых является активной и каким-то образом выделена с помощью CSS.

Какой был бы хороший способ сделать это динамически созданным в проекте Symfony.Передача каких-либо переменных из модуля в модуль.Элегантного решения я пока не нашел.

Это было полезно?

Решение

Обычно я просто вручную создаю массив комбинаций модулей и действий, которые хочу видеть в своем меню.Было бы довольно легко получить эту информацию из динамического источника (например, файла конфигурации или базы данных):

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

Затем я использую методы getActionName и getMethodName контроллера, чтобы определить, какой элемент в моем меню является текущим:

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

Затем я могу перебрать $menu из шаблона, чтобы создать меню.И я могу сравнить элементы с $current, чтобы определить, следует ли мне установить «текущий» класс для <li> пункта меню.

Пример дурака.com, который вы приводите, немного сложнее, потому что он двухуровневый.В этом случае вы, вероятно, захотите создать дерево меню из базы данных, возможно, используя поддержку вложенных наборов Propel.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top