如何在默认的“编辑”形式的奏鸣曲管理中删除“删除”按钮?

问题描述:

我写了一个代码来列出从一个简单的数据库中获取的数据,然后在那里放置了一个操作来编辑数据。当我点击这个编辑按钮时,它会进入默认的“编辑”页面。那里有一个叫做“删除”的按钮。我想删除按钮...如何在默认的“编辑”形式的奏鸣曲管理中删除“删除”按钮?

+1

接受工作答案,请! – 2012-11-23 12:42:49

+0

有没有办法从嵌入式窗体中删除删除路线..? $ collection-> remove('delete')只会删除管理员表单中的删除选项,但不会在表单被嵌入到其他表单中时删除选项 – GBRocks 2013-10-23 04:01:03

base_edit_form.html.twig:

{% if admin.hasroute('delete') and admin.isGranted('DELETE', object) %} 
    {% trans from 'SonataAdminBundle' %}delete_or{% endtrans %} 
    <a class="btn danger" href="{{ admin.generateObjectUrl('delete', object) }}">{% trans from 'SonataAdminBundle' %}link_delete{% endtrans %}</a> 
{% endif %} 

我看到3种方式来实现这一目标:

  • 删除删除路由,并会删除所有删除所有地方的按钮给管理员
  • 重新定义hasroute功能在您的管理员,它会给出相同的效果
  • 删除对象的删除权限,取决于什么做您使用权限
+0

感谢它的工作原理:) – user1548055 2012-08-16 11:48:31

在你EntityAdmin类添加以下

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

我也可以提出最佳解决方案。 – 2014-07-16 07:50:43

+1

这应该是公认的答案。 – 2015-06-29 16:41:24

+0

太棒了!谢谢。 – chalasr 2016-04-05 13:52:29

我需要隐藏编辑表单删除按钮而不是从列表中移除删除功能。

这是我做到了......万一有人需要做同样的事情

步骤1:复制SonataAdminBundle:CRUD:base_edit_form.html.twig到你的包,并注释掉的代码/更新如需要

//YourBundle/Resources/views/EntityAdmin/base_edit_form.html.twig 
{% block form %} 

... 

    {#{% if admin.hasroute('delete') and admin.isGranted('DELETE', object) %}#} 
    {#{{ 'delete_or'|trans({}, 'SonataAdminBundle') }}#} 
    {#<a class="btn btn-danger" href="{{ admin.generateObjectUrl('delete', object) }}">{{ 'link_delete'|trans({}, 'SonataAdminBundle') }}</a>#} 
    {#{% endif %}#} 

... 

{% endblock %} 

步骤2:添加一个新的视图资源edit.html.twig延长默认编辑模板

//YourBundle/Resources/views/EntityAdmin/edit.html.twig 
{% extends 'SonataAdminBundle:CRUD:base_edit.html.twig' %} 

{% use 'YourBundle:EntityAdmin:base_edit_form.html.twig' with form as parentForm %} 

{% block form %} 
    {{ block('parentForm') }} 
{% endblock %} 

步骤3:更新您的管理类中使用上面的模板

//YourBundle/Admin/EntityAdmin.php 
class EntityAdmin extends Admin{ 
... 
    public function getTemplate($name) 
    { 
     switch ($name) { 
      case 'edit': 
       return 'SomeBundle:EntityAdmin:edit.html.twig'; 
       break; 
      default: 
       return parent::getTemplate($name); 
       break; 
     } 
    } 
... 
}