Home » Php » php – How to override Show field in sonata admin

php – How to override Show field in sonata admin

Posted by: admin July 12, 2020 Leave a comment

Questions:

I want show the list of multiple attributes Name => value in a table overriding single field of only for PortsAdmin in ShowMapper

Ports Entity mapped with PortsAttributes Entity.

Relation of entity is OneToMany Ports with multiple attributes.

Admin View (Edit Action)

Edit View of attributes listing

Show Action

Show list of attributes

I want change attribute view same as edit Action.

How to&Answers:

You can create a custom template for the PostAttributes:

Example:

/* ShowMapper in admin */
$showMapper->add('attributes', null, array(
    'template' => 'YOUR_TEMPLATE.html.twig' // <-- This is the trick
));

In your template, you can extend the base show field (SonataAdminBundle:CRUD:base_show_field.html.twig), and override the field block. The variable named value stores the data in twig.

Example:

YOUR_TEMPLATE.html.twig

{% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}

{% block field %}
    {% for val in value %}
        {{ val.name }} - {{ val.value }} {# I'm just guessing the object properties #}
        <br/>
    {% endfor %}
{% endblock %}

Answer:

@SlimenTN you can try changing this line in template file:

{% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}

with this:

{% extends '@SonataAdmin/CRUD/base_show_field.html.twig' %}

The rest of code seems ok (I have the same in a SF4 project)