【问题标题】:How to override Show field in sonata admin如何覆盖奏鸣曲管理员中的显示字段
【发布时间】:2016-01-13 07:17:26
【问题描述】:

我想在覆盖单个字段的表中显示多个属性名称 => 值的列表,该字段仅适用于 ShowMapper 中的 PortsAdmin

Ports Entity 与 PortsAttributes Entity 映射。

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

管理员视图(编辑操作)

显示动作

我希望更改属性视图与编辑操作相同。

【问题讨论】:

    标签: php symfony sonata-admin


    【解决方案1】:

    您可以为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 %}
    

    【讨论】:

    • 我尝试了同样的技巧,但没有成功!我正在使用 symfony 3.4,而这个 template 属性仅适用于 symfony 3.1 是否有另一种方法可以覆盖 show_field 视图?
    【解决方案2】:

    @SlimenTN 您可以尝试在模板文件中更改此行:

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

    用这个:

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 2018-12-12
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2012-01-07
      • 2014-07-07
      相关资源
      最近更新 更多