我正在使用SonataAdminBundle
作为Symfony2(v2.0.x)支持的网站的管理界面的基础。
在SonataAdmin中添加到仪表板的实体默认具有以下操作:
- 添加
- 列表
这对大多数实体来说都很好,但该网站有一些实体的数据不是通过管理界面添加的,即它们是从面向公众的网站输入的。管理员只需要查看它们(在仪表板中列出操作)、编辑或删除它们。管理员不应该能够向这些实体添加数据。
有没有办法配置SonataAdmin面板中单个实体旁边显示的操作?
在EntityAdmin
类中添加以下
public function configureRoutes(RouteCollection $collection)
{
$collection->remove('create');
}
要从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中,还有一个类似的未记录函数(感谢Jeroen):
public function configureRoutes(RouteCollection $collection)
{
$collection->removeAllExcept(array('list', 'edit', 'delete', 'batch'))
}