SonataAdminBundle configureShowFields 与嵌套实体
SonataAdminBundle configureShowFields with nested entities
对于一个使用 symfony2 和 SonataAdminBundle 的项目,我想弄清楚如何在 show 动作中嵌入完整的相关实体。
为了更详细,假设我有一个 Article
和一个 Comment
。在 Article
的显示视图中,我想显示每个 Comment
具有多个属性以及对每个 Comment
的编辑和创建以向 Article
添加另一个评论。
我能够让它显示 Comment
个实体的列表,使用 ->add('comments')
向实体显示 link ,但这还不够。我需要真正嵌入实体!
有没有办法不用我们自己编写代码来做到这一点?如果手动操作是唯一的方法,那么最好的方法是什么?重写模板?
最简单的方法是为集合指定一个模板:
$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 %}
对于一个使用 symfony2 和 SonataAdminBundle 的项目,我想弄清楚如何在 show 动作中嵌入完整的相关实体。
为了更详细,假设我有一个 Article
和一个 Comment
。在 Article
的显示视图中,我想显示每个 Comment
具有多个属性以及对每个 Comment
的编辑和创建以向 Article
添加另一个评论。
我能够让它显示 Comment
个实体的列表,使用 ->add('comments')
向实体显示 link ,但这还不够。我需要真正嵌入实体!
有没有办法不用我们自己编写代码来做到这一点?如果手动操作是唯一的方法,那么最好的方法是什么?重写模板?
最简单的方法是为集合指定一个模板:
$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 %}