SonataAdminBundle 将字段显示为标签

SonataAdminBundle show field as label

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

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

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

对于您的 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 %}

在您的管理员中将其配置为模板 class :

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

解释虽少但很有帮助part of the documentation

我实际使用 sonata admin Bundle 2.3.3 版本进行了测试,就这么简单:

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

在您的管理员中 class。

自定义模板有效,但在这种情况下没有必要,因为它已经实现了。供应商模板位于 vendor/sonata-project/admin-bundle/Resources/views/CRUD/list_boolean.html.twig.