跳到内容

行模板

编辑此页

自 Sonata-2.2 版本起,可以为列表操作的每一行定义一个模板。默认模板是标准表格,但在某些情况下,这种类型的布局可能不合适。通过为行定义自定义模板,您可以将布局调整为类似这样的内容

Inline Row from the SonataNewsBundle

配方

配置您的 Admin 服务

配置在 DIC 中进行,通过调用 setTemplates 方法。需要设置两个模板键

  • inner_list_row:行的模板,您将自定义它。通常您希望它扩展 @SonataAdmin/CRUD/base_list_flat_inner_row.html.twig
  • base_list_field:单元格的基础模板,默认的 @SonataAdmin/CRUD/base_list_flat_field.html.twig 适用于大多数情况,但如果需要也可以自定义。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!-- config/services.xml -->

<service id="sonata.admin.comment" class="%sonata.admin.comment.class%">
    <call method="setTemplates">
        <argument type="collection">
            <argument key="inner_list_row">
                @App/Admin/inner_row_comment.html.twig
            </argument>
            <argument key="base_list_field">
                @SonataAdmin/CRUD/base_list_flat_field.html.twig
            </argument>
        </argument>
    </call>
    <tag
        name="sonata.admin"
        model_class="%sonata.admin.comment.entity%"
        controller="%sonata.admin.comment.controller%"
        manager_type="orm"
        group="sonata_blog"
        translation_domain="%sonata.admin.comment.translation_domain%"
        label="comments"
        label_translator_strategy="sonata.admin.label.strategy.underscore"
        />
</service>

创建您的自定义模板

定义模板后,创建模板以渲染行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{# @App/Admin/inner_row_comment.html.twig #}

{# Extend the default template, which provides batch and action cells #}
{#     as well as the valid colspan computation #}
{% extends '@SonataAdmin/CRUD/base_list_flat_inner_row.html.twig' %}

{% block row %}

    {# you can use fields defined in the the Admin class #}

    {{ object|render_list_element(admin.list['name']) }} -
    {{ object|render_list_element(admin.list['url']) }} -
    {{ object|render_list_element(admin.list['email']) }} <br/>

    <small>
        {# or you can use the object variable to render a property #}
        {{ object.message }}
    </small>

{% endblock %}

虽然此功能很好地生成了丰富的列表,但您可能会破坏布局和管理功能,例如批量和对象操作。最好熟悉默认模板并在可能的情况下扩展它们,仅更改您需要自定义的内容。

这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本