如何为目录项创建动态路由器

时间:2013-04-23 11:02:44

标签: symfony

我正在尝试使用Kunstmaan bundles处理Symfony2并遇到一个问题。 目前我正在尝试创建目录包,一切似乎都很好,但我不想为每个产品创建菜单项。通过/ en / catalog / *菜单项中的项目slug-title动态访问产品会很棒。怎么可能?

2 个答案:

答案 0 :(得分:3)

我们遇到了同样的问题......我们正在尝试通过创建目录项来解决这个问题,这些目录项也是菜单项但是作为父项为null,因此它们不会显示在树中。通过执行此操作,您仍然拥有版本控制系统和所有内容,但是当您有许多目录项时,它不会减慢树的速度。您可以使用AdminListBundle(https://github.com/Kunstmaan/KunstmaanAdminListBundle

在管理列表中的某处列出这些目录项

要将这些目录项链接到某个概述页面,我们正在使用chainrouter(https://github.com/Kunstmaan/KunstmaanNodeBundle/blob/master/Resources/doc/NodeBundle.md)。目前我们没有一个明确的例子,但也许这可以让你开始?我们正在尝试更容易地使用chainrouter,但它仍在构建中:https://github.com/Kunstmaan/KunstmaanNodeBundle/pull/38/files

答案 1 :(得分:1)

最快/最简单的方法是将您的产品制作为可以定义为目录子项的页面。 KunstmaanNodeBundle将照顾slu ..

在Catalog类中(我假设它扩展了AbstractPage)覆盖了getPossibleChildTypes方法:

public function getPossibleChildTypes()
{
    return array (
        array(
            'name' => 'Product',
            'class'=> "Acme\CatalogBundle\Entity\Product"
        )
    );
}

这样您就可以在目录页面下创建产品作为子页面。然后,您只需要在目录页面的树枝模板中获取目录的子项。

缺点是,每个产品都是一个页面(带版本控制),而不是一个简单的实体。