如何仅在子管理员(SonataAdminBundle)中删除路由?

时间:2018-06-17 14:14:29

标签: symfony sonata-admin symfony-sonata

我有像“用户管理员”这样的管理员和一个像“文档管理员”“

这样的子管理员
admin.users:
    class: App\Admin\UserAdmin
    arguments: [~, App\Entity\User, SonataAdminBundle:CRUD]
    calls:
      - [addChild, ['@admin.documents'] ]
    tags:
      - {name: sonata.admin, manager_type: orm, label: Users}
    public: true

admin.documents:
    class: App\Admin\DocumentsAdmin
    arguments: [~, App\Entity\Document, ~]
    calls:
       - [setParentAssociationMapping, ['user']]
       - [setTranslationDomain, ['admin']]
    tags:
      - {name: sonata.admin, manager_type: orm, label: Documents}
    public: true

我尝试删除创建和删除路由

应用\管理员\ DocumentAdmin

protected function configureRoutes(RouteCollection $collection)
{        
    parent::configureRoutes($collection);
    $collection->remove('delete');
    $collection->remove('create');
}

但是当我打开这个管理员( / admin / app / user / 1 / document / list )时,我收到错误:

  

在渲染模板期间抛出了异常   (“无法生成指定路由的URL   “admin_app_user_document_create”因为这样的路线不存在。“)。

不工作,但应该是。我希望看到子管理员机智用户文档,而无需添加和创建按钮。

但是当我直接打开文档管理员( / admin / app / document / list )时 - 一切正常!我看到列表没有添加,编辑和删除按钮。

如何在两种情况下删除DocumentAdmin中的路由?

Symfony 4 / Sonata Admin 3.35

1 个答案:

答案 0 :(得分:0)

您只删除了创建和删除链接。您还需要删除链接以列出实体。我想这就是你需要的?也加上这一行。

protected function configureRoutes(RouteCollection $collection)
{        
    parent::configureRoutes($collection);
    $collection->remove('delete');
    $collection->remove('create');
    $collection->remove('list');
}

您可以查看列表文档,因为您没有从路径集合中删除列表操作。