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

Posted

技术标签:

【中文标题】如何仅在子管理员(SonataAdminBundle)中删除路由?【英文标题】:How to remove routes only in child admin (SonataAdminBundle)? 【发布时间】:2018-11-26 14:12:21 【问题描述】:

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

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

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

应用\管理员\文档管理员

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】:

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

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

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

【讨论】:

我想在子管理员中查看最少的文档。如果我输入您的代码 - 我将在子管理员中收到相同的错误。但是当我直接打开文档列表时-您的代码将起作用。主要问题是为什么在子管理员中该代码不起作用【参考方案2】:

只做缓存:清除重新生成路由需要时间

【讨论】:

嘿!你能解释一下为什么你的解决方案可以解决这个问题吗? :) 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何仅在子管理员(SonataAdminBundle)中删除路由?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone UIView:是不是可以仅在子视图上启用用户交互?

仅在子例程中需要时才使用 Perl 模块

父 NSManagedObjectContext 在子保存后没有变化,但仅在发布模式下(在调试模式下工作)

使用带有 Hibernate 的 JPA 注释来描述外键仅在子表中的 @OneToMany 关系

是否必须仅在子模块中添加 spring-boot-starter-* 依赖项?

mongodb中的嵌套条目,仅在子字段的最大值上求和和平均值