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

问题描述:

我正在尝试使用Symfony2的Kunstmaan bundles并且有一个问题。 目前我试图创建目录捆绑包,一切似乎okey,但我不想为每个产品创建菜单项。在/ en/catalog/*菜单项中通过item slug-title动态访问产品将会很好。这怎么可能?如何为目录项目创建动态路由器

+0

看看这里http://symfony.com/doc/2.1/book/routing.html。第一个例子是关于你的问题。 – Michi 2013-04-23 13:40:37

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

目录中的类(我假设它扩展自AbstractBase)覆盖getPossibleChildTypes方法:

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

这样你可以创建产品作为下您目录页子页面。然后,您只需要将目录中的孩子放入目录页面的树枝模板中即可。

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

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

对这些目录项链接到我们使用的是chainrouter(https://github.com/Kunstmaan/KunstmaanNodeBundle/blob/master/Resources/doc/NodeBundle.md)一定概述页面管理员列表地方列出这些目录项。现在我们没有一个明确的例子,但也许这可以让你开始?我们正在尝试使用链式传送器更容易,但它仍在建设中:https://github.com/Kunstmaan/KunstmaanNodeBundle/pull/38/files