Как создать динамическое меню в Symfony - PullRequest
3 голосов
/ 16 февраля 2009

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

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

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

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

1 Ответ

4 голосов
/ 20 февраля 2009

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

$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);

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

.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...