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 Dashboard 包

Sonata 管理仪表板中仅显示两个管理面板

当sonata_type_admin调用时如何在Sonata的Admin类中获取底层对象?

Sonata 管理包:无法删除与 sonata_type_admin 的关系

服务“admin.category”依赖于不存在的服务“sonata.admin.manager.orm”

有没有办法确定 Sonata\AdminBundle\Admin\Admin::configureFormFields() 中的当前操作(创建或编辑)?