3

虽然我确实发现 PHP Symfony 框架在很多方面都很棒,但我发现很难为网站创建易于扩展的动态菜单。

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

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

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

4

1 回答 1

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

然后我可以从模板中迭代 $menu 来构建菜单。我可以将这些项目与 $current 进行比较,以确定是否应该在菜单项的 <li> 上设置“当前”类。

你给出的傻瓜网例子有点复杂,因为它有两个层次。在这种情况下,您可能希望从数据库中生成菜单树,可能利用 Propel 的嵌套集支持。

于 2009-02-20T03:34:26.153 回答