我正在使用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代码 但是我真的不喜欢这样做,而不是将数据注入到已经存在的模板中,而是觉得可能有一种方法可以代替。