2016-02-16 59 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