簡體   English   中英

如何在sonata admin的默認“編輯”形式中刪除“刪除”按鈕?

[英]How to remove “delete” button in default “Edit” form of sonata admin?

我寫了一個代碼來列出從一個簡單的數據庫中獲取的數據,然后我在其中編寫了一個動作來編輯數據 當我單擊此“編輯”按鈕時,它將轉到默認的“編輯”頁面。 那里有一個名為“刪除”的按鈕。 我想刪除那個按鈕......

在您的EntityAdmin類中添加以下內容

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

我需要隱藏編輯表單中的刪除按鈕,但不從列表中刪除刪除功能。

這就是我做的方式......如果有人需要做類似的事情

第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步 :更新您的Admin類以使用上述模板

//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;
        }
    }
...
}

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 %}

我看到有三種方法可以實現這一目標:

  • 刪除刪除路由,它將刪除所有地方的所有刪除按鈕給管理員
  • 在您的管理員中重新定義hasroute功能,它將產生相同的效果
  • 刪除對象的刪除權限,取決於您使用什么權限

首先在CustomClassAdmin中使用類RouteCollection:

 use Sonata\\AdminBundle\\Route\\RouteCollection; 

並添加以下代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM