如何仅在子管理员(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:是不是可以仅在子视图上启用用户交互?
父 NSManagedObjectContext 在子保存后没有变化,但仅在发布模式下(在调试模式下工作)
使用带有 Hibernate 的 JPA 注释来描述外键仅在子表中的 @OneToMany 关系