Sonata Admin Dashboard:为每个实体配置操作
Posted
技术标签:
【中文标题】Sonata Admin Dashboard:为每个实体配置操作【英文标题】:Sonata Admin Dashboard: configure actions per entity 【发布时间】:2012-03-24 03:38:26 【问题描述】:我使用 SonataAdminBundle
作为 Symfony2 (v2.0.x) 驱动网站的管理界面的基础。
在 SonataAdmin 中添加到仪表板的实体默认具有以下操作:
添加 列表这适用于大多数实体,但是该网站有一些实体没有通过管理界面添加数据 - 即它们是从面向公众的网站输入的。管理员只需查看它们(仪表板中的“列表”操作)、编辑或删除它们。管理员应该无法向这些实体添加数据。
有没有办法配置在 SonataAdmin 仪表板中的各个实体旁边显示哪些操作?
【问题讨论】:
【参考方案1】:在您的 EntityAdmin
类中添加以下内容
public function configureRoutes(RouteCollection $collection)
$collection->remove('create');
【讨论】:
谢谢伙计,正是我需要的!【参考方案2】:要从 Admin
类中删除单个路由,请使用
protected function configureRoutes(RouteCollection $collection)
$collection->remove('edit');
在 Symfony 2.1+ 中,您可以使用 clearExcept
删除所有路由除了给定的路由,如下所示:
public function configureRoutes(RouteCollection $collection)
$collection->clearExcept(array('list', 'edit', 'delete', 'batch'))
这样做的好处是在将新操作添加到 SonataAdminBundle
时保持操作不变。
在 Symfony 2.0 中,也有类似的 undocumented 函数(感谢 Jeroen):
public function configureRoutes(RouteCollection $collection)
$collection->removeAllExcept(array('list', 'edit', 'delete', 'batch'))
【讨论】:
$collection->clearExcept(array('list'))
为我工作,以便只留下列表选项。以上是关于Sonata Admin Dashboard:为每个实体配置操作的主要内容,如果未能解决你的问题,请参考以下文章
当sonata_type_admin调用时如何在Sonata的Admin类中获取底层对象?
Sonata 管理包:无法删除与 sonata_type_admin 的关系
服务“admin.category”依赖于不存在的服务“sonata.admin.manager.orm”
有没有办法确定 Sonata\AdminBundle\Admin\Admin::configureFormFields() 中的当前操作(创建或编辑)?