Использовать таблицу из base_list в шаблоне пользовательских действий Sonata Admin - PullRequest
0 голосов
/ 28 мая 2019

Я использую 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-код из шаблона. Но мне действительно не нравится делать это вместо вставки данных в уже существующий шаблон, и я чувствую, что вместо этого может быть способ сделать это.

...