代码之家  ›  专栏  ›  技术社区  ›  Bengall

删除特定路由的“添加新(创建)”按钮

  •  0
  • Bengall  · 技术社区  · 8 年前

    正在尝试删除的“添加新”按钮 /阶段服务器/列表 路线

    我已尝试使用此代码:

    public function getBatchActions()
    {
        $actions = parent::getBatchActions();
    
        if($this->hasRoute('/stageserver/list'))
        {
            $actions['remove'] = 'create';
        }
    
    }
    

    public function configureRoutes(RouteCollection $collection)
    {
       $collection->remove('create');
    }
    

    我在Sonata文档中找不到具体的路径删除,或者我已经找到了 错过了。

    1 回复  |  直到 8 年前
        1
  •  3
  •   Nigel Ren    8 年前

    使用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;
        }
    }
    
    推荐文章