SonataAdminBundle显示字段作为标签

时间:2016-02-16 10:28:01

标签: view sonata-admin symfony-sonata symfony

我有枚举字段status,我想在label label-info html中显示。就像它显示的布尔值(红色或绿色)。

在那里演示他们有很多标签,但我找不到如何添加它们。

enter image description here

2 个答案:

答案 0 :(得分:5)

您必须为要自定义渲染的字段创建自定义模板。

对于您的status字段,请创建如下模板:

// src/AcmeBundle/Resources/views/CRUD/status_field.html.twig

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

{% block field %}
    {% set status = object.status == 1 ? 'success' : 'danger' %}
    <div>
        <span class="label label-{{ status }}">{{ object.status }}</span><br />
    </div>
{% endblock %}

在管理员类中将其配置为模板:

$listMapper
    // ...
    ->add('status', null, array(
        'template' => 'AcmeBundle:CRUD:status_field.html.twig'
    ))

在小而有帮助的part of the documentation中解释。

答案 1 :(得分:2)

我实际上使用奏鸣曲管理员Bundle版本2.3.3进行了测试,它就像这样简单:

/**
 * @param ListMapper $listMapper
 */
protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->add('status', 'boolean');
}

在您的管理类中。

自定义模板可以正常工作,但在这种情况下不需要,因为它已经实现了。供应商模板位于vendor/sonata-project/admin-bundle/Resources/views/CRUD/list_boolean.html.twig