Я использую Sonata Admin и создал пользовательское действие.
Действие решается главным образом вокруг получения объекта A и создания списка из коллекции (отношения с другим объектом - ManyToOne) и разрешения других пользовательскихдействие (подробности, удаление и т. д.) на этот связанный объект.
Первоначальный объект A будет выбран в стандартном списке действий Сонаты.Теперь я смог включить сущность A в пользовательское действие и отобразить все в необработанном HTML.
Я хотел бы использовать шаблон таблицы из @ SonataAdmin / CRUD / base_list.html.twig, но не знаю, как поступить (или, если это вообще возможно), поскольку таблица, кажется, только отображаетиз сетки данных listAction.
Я мог бы переопределить какой-то другой блок шаблона, используя блок Твига и с / endwith, но в этих блоках мне нужно было только переопределить / ввести простую переменную (заголовок, действие ...).
В случае табличной формы @ SonataAdmin / CRUD / base_list.html.twig это выглядит намного сложнее, так как оно напрямую использует сетку данных (генерируется с помощью запросов, определенных в Admin: createQuery ()).
До сих пор я не нашел способа указать шаблону использовать коллекцию внутри сущности А вместо запроса listAction.
{% extends 'SonataAdminBundle::standard_layout.html.twig' %}
{% block sonata_head_title %}
{#
Here I override the sonata_head_title block
and by using with/endwith override a variable used in it
#}
{% with {
'_title': "My Custom title",
}
%}
{{ parent() }}
{% endwith %}
{% endblock %}
{% block custom_content %}
{#
This, of course, does not work
The table will still display the same list from listAction
#}
{% with {
'admin.datagrid.results': entityA.relations,
}
%}
{{ block("list_table", "@SonataAdmin/CRUD/base_list.html.twig") }}
{% endwith %}
{#
Crude and ugly list
#}
<ul>
{% for entity in entityA.relations %}
<li>{{entity.id}} - <a href="{{ admin.generateObjectUrl('oneCustomAction',entity)">Single Action</a> }}
{% endfor %}</li>
</ul>
{% endblock %}
Пока что мне придетсянапрямую скопируйте html-код из шаблона. Но мне действительно не нравится делать это вместо вставки данных в уже существующий шаблон, и я чувствую, что вместо этого может быть способ сделать это.