如何覆盖奏鸣曲管理员中的显示字段

How to override Show field in sonata admin

我想在 table 中显示多个属性的列表 Name => value 仅在 ShowMapper

中覆盖 PortsAdmin 的单个字段

Ports 实体映射到 PortsAttributes 实体。

实体关系是OneToMany具有多个属性的端口。

管理员视图(编辑操作)

显示动作

I want change attribute view same as edit Action.

您可以为 PostAttributes 创建自定义模板:

示例:

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

在您的模板中,您可以扩展基本显示字段 (SonataAdminBundle:CRUD:base_show_field.html.twig),并覆盖 field 块。名为 value 的变量将数据存储在 twig 中。

示例:

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 %}

@SlimenTN 你可以尝试更改模板文件中的这一行:

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

有了这个:

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

其余代码似乎没问题(我在 SF4 项目中有相同的代码)