symfony1-如何在Symfony中创建动态菜单

虽然我确实发现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>上设置“ current”类.

您给出的fool.com示例更加复杂,因为它是两个级别.在这种情况下,您可能想从数据库生成菜单树,也许利用Propel的嵌套集支持.

转载注明原文:symfony1-如何在Symfony中创建动态菜单 - 代码日志