我正在删除 / stageserver / list 路线的添加新按钮。
我尝试过这段代码:
public function getBatchActions()
{
$actions = parent::getBatchActions();
if($this->hasRoute('/stageserver/list'))
{
$actions['remove'] = 'create';
}
}
我已经尝试了下一个代码,但它在所有其他管理部分中删除了该路由。
public function configureRoutes(RouteCollection $collection)
{
$collection->remove('create');
}
我无法找到索纳塔文档中的特定路线删除,或者我可能找到 错过了。
答案 0 :(得分:2)
使用Sonata,您的管理员与单个实体相关。
示例,我有一个名为AppBundle\Entity\StageServer
的实体。
我创建了一个管理服务来管理这个实体:
admin.stage_server:
class: AppBundle\Admin\StageServerAdmin
public: true
arguments: [~, AppBundle\Entity\StageServer, ~]
tags:
- { name: sonata.admin, manager_type: orm }
这个服务的专用课程:
<?php
namespace AppBundle\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Route\RouteCollection;
class StageServerAdmin extends AbstractAdmin
{
protected function configureRoutes(RouteCollection $collection)
{
$collection->remove('create');
}
}
这应该足以删除创建AppBundle\Entity\StageServer
个对象的能力。
修改强>
使用configureActionButtons
方法仅在create
操作时移除list
按钮的解决方案。
<?php
namespace AppBundle\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Route\RouteCollection;
class StageServerAdmin extends AbstractAdmin
{
public function configureActionButtons($action, $object = null)
{
$buttons = parent::configureActionButtons($action, $object);
if (in_array($action, array('list'))) {
unset($buttons['create']);
}
return $buttons;
}
}