如何在Symfony中创建动态菜单

时间:2009-02-16 10:16:30

标签: symfony1 menu

虽然我发现PHP Symfony框架对很多东西都很好,但我发现很难为网站创建易于扩展的动态菜单。

我想知道其他Symfony开发人员是如何处理这个问题的。 我将举一个简单的例子来说明我的要求。

如果访问www.fool.com,您会看到他们有一个典型的菜单设置。一个类别列表,其中一个是活动的类别,以某种方式用CSS突出显示。

在Symfony项目中动态创建它的好方法是什么。从模块到模块传递某种变量。我还没有找到一个优雅的解决方案。

1 个答案:

答案 0 :(得分:4)

通常,我只是手动构建一个模块/动作组合数组,我想在菜单中显示。从动态源(如配置文件或数据库)中获取此信息相当容易:

$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进行比较,以确定是否应在菜单项的< li>上设置“当前”类。

你给出的fool.com示例有点复杂,因为它是两级的。在这种情况下,您可能希望从数据库生成菜单树,也许可以使用Propel的嵌套集支持。