Sonata Admin Custom list field template contains link to admin edit object

sonata, symfony

Solution

Assuming both objects have a `name` property:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
    {% if object.getPerson is defined %}
        {% set objectRoute = 'person_edit' %}
    {% elseif object.getFactory is defined %}
        {% set objectRoute = 'factory_edit' %}
    {% endif %}
    <a href="{{ path(objectRoute, { id: object.id }) }}">{{ object.name }}</a>
{% endblock %}

Note that sonata admin bundle creates the edit route based on the `$baseRouteName` property of the admin class, appending the action name.

Problem

I have an admin class of an object of class Car. This object is in relation with Person or Organisation. I know how to add a column for Person and Organisation, and i have a link to the edit object ``` $listMapper ->add('person', null, array('admin_code' => 'appli.admin.person')) ->add('factory', null, array('admin_code' => 'appli.admin.factory')) ``` This create a link ( However i want just one column. I make this : ``` $listMapper->add('name',null,array('label'=>'Name','template'=>'AcmeBundle:Admin/Car/list_name.html.twig')) ``` But in my template i want something like this but i don't understand how make the link to the edit object : ``` {% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %} {% block field%} {% if object.getPerson %} {% set urlObject = 'linkToAdminEditPerson' %} {% elseif object.getFactory %} {% set urlObject = 'linkToAdminEditFactory' %} {% endif %} <a href="{{ urlObject }}">{{ object.name }}</a> {% endblock %} ``` Thank You

Original source