如何在 Sonata Admin 中指定操作按钮模板

How to specify action button template in Sonata Admin

请告诉我。为什么如果我指定一个操作按钮模板,无论访问权限如何都会显示该按钮?

$listMapper
    ->add('_action', 'actions', [
        'actions' => [
            //displayed depending on the access rights
            'edit' => [],
            //displayed regardless of access rights 
            'delete' => [
                'template' => '@App/list__action_delete.html.twig',                 
            ],
        ]
    ]);

以及如何指定模板以便根据访问权限显示按钮?

可能的原因是您忘记将访问检查添加到您的自定义模板中。

如果您查看 build-in Sonata template,您会发现实际的访问检查是在模板本身中完成的,而不是在外部代码中完成的。所以只需将那些支票从原始模板复制到您的模板中即可。

示例:

    {% if admin.hasAccess('delete', object) and admin.hasRoute('delete') %}
        {# --- Your custom button view here --- #}
    {% endif %}