2014-07-25 69 views
1

我配置奏鸣曲管理产品类中KNP菜单,我想添加链接到其他管理类(类别)我怎样才能得到奏鸣曲管理类中的自定义路线

我的代码是:

protected function configureSideMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null) 
{ 
    $menu->addChild(
     $this->trans('product.sidemenu.link_designer', array(), 'm2m'), 
     array('uri' => $admin->generateUrl('sonata.classification.admin.category.list')) 
    ); 
} 

不幸的路线'sonata.classification.admin.category.show'不存在。来自应用程序/控制台路由器的路由器调试也可以工作。我无法在服务中注入@router,因为服务的定义在供应商内部。

任何想法?

回答

2

我找到了简单的解决方案。我的错误,因为奏鸣曲演示定义的默认菜单项,看起来是这样的:

$menu->addChild(
      $this->trans('product.sidemenu.view_variations'), 
      array('uri' => $admin->generateUrl('sonata.product.admin.product.variation.list', array('id' => $id))) 
     ); 

,并添加自定义的路线,我不得不添加的路由参数,而不是URI。

$menu->addChild(
      $this->trans('product.sidemenu.view_variations'), 
      array('route' => 'admin_sonata_classification_category_list') 
     ); 

现在一切正常。

1

在您的管理,你可以重写configureRoutes方法,这表现在文档中:

http://sonata-project.org/bundles/admin/2-2/doc/reference/routing.html#create-a-route

这将允许您添加自定义路线您的管理员。

+0

我以为我不需要创建新的路线,因为我想使用现有的路线。这就是为什么我没有尝试过你的解决方案之前 –

+0

@ user2482094你是否尝试过使用下划线而不是路径句号?索纳塔为路线名称使用下划线。 – jrdn

+0

是的,我尝试过。当我添加下划线奏鸣曲路线名称我收到异常:路线不存在。我在供应商配置(admin.xml)中进行了挖掘,并且我只能访问配置中定义的服务(如sonata.product.admin.product.variation –

相关问题