Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 556
Noman Avatar asked Jan 13 '16 07:01

Noman


1 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 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 %}
like image 57
Fracsi Avatar answered Nov 15 '22 01:11

Fracsi