Skip to content
Advertisement

How to override Show field in sonata admin

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.

Advertisement

Answer

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 or @SonataAdmin/CRUD/base_show_field.html.twig for symfony > 4.0), 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' %}
{# for sf > 4.0 #}
{#  {% extends '@SonataAdmin/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 %}
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement