对于使用symfony2和SonataAdminBundle的项目,我试图弄清楚如何在show动作中嵌入完整的相关实体。
要详细了解,请说我有Article
和Comment
。在Article
的展示视图中,我希望每个Comment
显示多个属性以及每个属性上的编辑,并创建一个CREATE以向Article
添加另一条评论
我能够让它显示Comment
个实体列表,这些实体使用->add('comments')
链接到实体,但这还不够。我需要真正嵌入实体!
有没有办法在没有自己编码的情况下执行此操作?如果手动操作是唯一的方法,那么最好的方法是什么?重写模板?
答案 0 :(得分:1)
最简单的方法是为集合指定模板:
$showMapper->add('comments', 'collection', [
'template' => 'YourBundle:SomePath:SubPath/show_comment_collection.html.twig',
]);
向SonataAdminBundle:CRUD:base_show_field.html.twig
查找要用作示例的模板。并且,在该模板中,您可以遍历value
变量。例如:
{% block field %}
<ul>
{% for comment in value %}
<li><a href="{{ path('some_route', {'id': comment.id}) }}">
{{ comment.id }} - {{ comment.otherProperty}}</a>
</li>
{% else %}
<li>No comments</li>
{% endfor %}
</ul>
{% endblock %}