Я знаю, что мы можем настроить ссылки на действия, которые мы хотим в списке просмотра оу в нашем классе лица администратора благодаря:SonataAdmin - Как добавить свою логику до отображения конкретных действий ссылки
$listMapper
->addIdentifier('name')
->add('minRole')
->add('_action', null, [
'actions' => [
'show' => [],
'edit' => [],
'delete' => []
]
])
;
или управлять роли благодаря служба: sonata.admin.security.handler.role
в моем случае, я хотел бы добавить логику домена, чтобы отобразить или нет кнопки удаления (он появится в списке вида и видередактирования).
{% if attribute(object, hasEvents) is defined and not object.hasEvents %}
# display it
{% endif %}
Я не знаю, как переопределить шаблоны ветви сонаты, чтобы сделать это. Только два объекта: Event
и Post
.
EDIT
для списка просмотра Я непосредственно переопределить list__action_delete.html.twig
шаблон (я создал app/Resources/SonataAdminBundle/views/CRUD/list__action_delete.html.twig
) и это код (я знаю, что это не лучший способ ...):
{#
The template override the basic one in order to prevent the display of the delete button (in the view list) for the entities
Post and Event. We only display it if they don't have associated activities.
#}
{% if admin.isGranted('DELETE', object) and admin.hasRoute('delete') %}
{% if not attribute(object, 'isDeleteable') is defined %}
<a href="{{ admin.generateObjectUrl('delete', object) }}" class="btn btn-sm btn-default delete_link" title="{{ 'action_delete'|trans({}, 'SonataAdminBundle') }}">
<i class="fa fa-times"></i>
{{ 'action_delete'|trans({}, 'SonataAdminBundle') }}
</a>
{% else %}
{% if object.isDeleteable %}
<a href="{{ admin.generateObjectUrl('delete', object) }}" class="btn btn-sm btn-default delete_link" title="{{ 'action_delete'|trans({}, 'SonataAdminBundle') }}">
<i class="fa fa-times"></i>
{{ 'action_delete'|trans({}, 'SonataAdminBundle') }}
</a>
{% endif %}
{% endif %}
{% endif %}
Большое спасибо за ваш четкий ответ, поскольку страница редактирования работает отлично, но вместо этого я использовал блок 'sonata_form_actions' :) –