2016-12-06 38 views
0

對於使用symfony2和SonataAdminBundle的項目,我試圖弄清楚如何在show動作中嵌入完整的相關實體。SonataAdminBundle configureShowFields嵌套實體

欲瞭解更多細節,比方說我有一個Article和一個Comment。在Article的展示視圖中,我想顯示每個Comment具有多個屬性以及每個編輯和一個CREATE以向該Article添加另一個註釋。

我能夠讓它顯示一個Comment實體列表,通過使用->add('comments')鏈接到實體,但這還不夠。我需要讓實體真正嵌入!

有沒有辦法做到這一點,而無需自己編碼?如果手動執行是唯一的方法,那麼最好的方法是什麼?重寫模板?

回答

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 %}