2016-02-16 36 views
2

我有enum字段status,我想在label label-info html中显示。就像它显示的布尔值(红色或绿色)。SonataAdminBundle显示字段作为标签

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

enter image description here

回答

5

你必须创建要自定义渲染领域的自定义模板。在您的管理类

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

将其配置为模板:

为了您status场,创建一个模板,这样

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

解释了一点,但有帮助part of the documentation

2

我竟与索纳塔管理套件版本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

+1

我没有给出这种替代方案,因为我认为业主知道他可以硬定义该字段的类型。谢谢你的补充。 – chalasr