在Sonata Admin自定义操作模板中使用base_list中的表

时间:2019-05-28 08:59:49

标签: php symfony sonata-admin

我正在使用Sonata Admin并创建了一个自定义操作。

该动作主要围绕获取实体A以及从集合中创建列表(与另一个实体的关系-ManyToOne)以及允许对这些相关实体进行其他自定义动作(详细信息,删除等)来解决。 / p>

初始实体A将在Sonata的标准listAction中选择。 现在,我可以在自定义操作中获得实体A并以原始HTML显示所有内容。

我想使用@ SonataAdmin / CRUD / base_list.html.twig中的表格模板,但不知道如何进行操作(甚至可能),因为表格似乎仅显示listAction中的内容数据网格。

我可以通过使用Twig的块以及with / endwith来覆盖其他模板块,但是在这些块中,我只需要覆盖/注入简单变量(title,action ...)。

对于表格形式@ SonataAdmin / CRUD / base_list.html.twig而言,它看起来更加复杂,因为它直接使用datagrid(使用Admin:createQuery()中定义的查询生成)。

到目前为止,我还没有找到一种告诉模板使用实体A内的集合而不是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代码 但是我真的不喜欢这样做,而不是将数据注入到已经存在的模板中,而是觉得可能有一种方法可以代替。

0 个答案:

没有答案