删除特定路线的添加新(创建)按钮
Removing Add new (create) button for specific route
我正在尝试为 /stageserver/list 路线删除添加新按钮。
我试过这个代码:
public function getBatchActions()
{
$actions = parent::getBatchActions();
if($this->hasRoute('/stageserver/list'))
{
$actions['remove'] = 'create';
}
}
我已经尝试了下一个代码,但它删除了所有其他管理部分中的该路由。
public function configureRoutes(RouteCollection $collection)
{
$collection->remove('create');
}
我在 Sonata 文档中找不到具体的路线删除,或者我有
错过了。
使用 Sonata,您的管理员与单个实体相关。
例如,我有一个名为 AppBundle\Entity\StageServer
.
的实体
我创建了一个管理服务来管理这个实体:
admin.stage_server:
class: AppBundle\Admin\StageServerAdmin
public: true
arguments: [~, AppBundle\Entity\StageServer, ~]
tags:
- { name: sonata.admin, manager_type: orm }
还有专用于此服务的 class :
<?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
方法的解决方案仅在进入 list
操作时删除 create
按钮。
<?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;
}
}
我正在尝试为 /stageserver/list 路线删除添加新按钮。
我试过这个代码:
public function getBatchActions()
{
$actions = parent::getBatchActions();
if($this->hasRoute('/stageserver/list'))
{
$actions['remove'] = 'create';
}
}
我已经尝试了下一个代码,但它删除了所有其他管理部分中的该路由。
public function configureRoutes(RouteCollection $collection)
{
$collection->remove('create');
}
我在 Sonata 文档中找不到具体的路线删除,或者我有 错过了。
使用 Sonata,您的管理员与单个实体相关。
例如,我有一个名为 AppBundle\Entity\StageServer
.
我创建了一个管理服务来管理这个实体:
admin.stage_server:
class: AppBundle\Admin\StageServerAdmin
public: true
arguments: [~, AppBundle\Entity\StageServer, ~]
tags:
- { name: sonata.admin, manager_type: orm }
还有专用于此服务的 class :
<?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
方法的解决方案仅在进入 list
操作时删除 create
按钮。
<?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;
}
}