Sonata AdminBundle - 在 config.yml 中重写操作按钮模板

SonataAdminBundle - rewrite action button teplates in config.yml

我自定义了操作按钮模板(显示、编辑和删除),目前正在从管理员内部调用它们 class。

->add('_action', 'actions', array(
            'actions' => array(
                'show' => array('template' => 'IndexBundle:Admin:action/show.html.twig'),
                'edit' => array('template' => 'IndexBundle:Admin:action/edit.html.twig'),
                'delete' => array('template' => 'IndexBundle:Admin:action/delete.html.twig')
            )
        ));

但是我希望这些模板能够重写配置文件中的默认模板,而不是在每个管理员中定义模板。不幸的是,文档没有提到全局重写默认操作模板。有办法吗?

sonata_admin:
    templates:
        ...

如果在“app”目录中定义新文件,您可以重写任何包的任何部分。

对于您的示例,如果您只想重写默认按钮模板,您可以这样做:

{# app/Resources/SonataAdminBundle/views/CRUD/list__action_edit.html.twig #}

{% if admin.isGranted('EDIT', object) and admin.hasRoute('edit') %}
<a href="{{ admin.generateObjectUrl('edit', object) }}" class="btn btn-sm btn-default edit_link" title="{{ 'action_edit'|trans({}, 'SonataAdminBundle') }}">
    {# icon was here #}
    {{ 'action_edit'|trans({}, 'SonataAdminBundle') }}
</a>
{% endif %}

使用:

  • list__action_delete.html.twig 删除按钮
  • list__action_edit.html.twig 编辑按钮
  • list__action_show.html.twig 用于显示操作按钮

您可以在 /vendor/sonata-project/admin-bundle/Resources/views/CRUD/ 目录中找到其他模板

PS。不要忘记清除缓存。