简体   繁体   中英

SonataAdminBundle configureShowFields with nested entities

For a project which uses symfony2 and the SonataAdminBundle, I am trying to figure out how to embed complete related entities in the show action.

To get more into detail, let's say I have a Article and a Comment . On the show view for the Article , I'd like to show each Comment with multiple properties as well as an EDIT on each and a CREATE to add another comment to that Article .

I was able to get it to get it to display a list of Comment entities which link to the Entity by using ->add('comments') , but that's not enough. I need to have the entity really embedded!

Is there a way to do this without coding it on our own? And if doing it manually is the only way, what's the best approach? Rewriting the template?

Simplest way is to specify a template for the collection:

$showMapper->add('comments', 'collection', [
    'template' => 'YourBundle:SomePath:SubPath/show_comment_collection.html.twig',
]);

Look to SonataAdminBundle:CRUD:base_show_field.html.twig for a template to use as an example. And, in that template, you can loop over the value variable. For example:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM