Sonata管理员自定义列表字段模板包含指向管理员编辑对象的链接

Joh*_*ann 3 symfony sonata

我有一个Car类的对象的管理类。该对象与个人或组织有关。

我知道如何为“人员和组织”添加一列,并且我有一个指向编辑对象的链接

$listMapper
->add('person', null, array('admin_code' => 'appli.admin.person'))
->add('factory', null, array('admin_code' => 'appli.admin.factory'))
Run Code Online (Sandbox Code Playgroud)

这将创建一个链接(

但是我只想要一列。我做这个:

$listMapper->add('name',null,array('label'=>'Name','template'=>'AcmeBundle:Admin/Car/list_name.html.twig'))
Run Code Online (Sandbox Code Playgroud)

但是在我的模板中,我想要这样的东西,但是我不明白如何建立指向编辑对象的链接:

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

谢谢

dev*_*ius 5

假设两个对象都有一个name属性:

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

请注意,sonata admin捆绑包将基于$baseRouteNameadmin类的属性创建编辑路径,并添加操作名称。