2016-02-16 4 views
2

У меня есть поле перечисления status, которое я хочу показать в label label-info html. Как и для булевых значений (красный или зеленый).SonataAdminBundle показать поле как метка

В этой демонстрации у них много ярлыков, но я не могу найти, как их добавить.

enter image description here

ответ

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.

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.

+1

Я не предлагаю эту альтернативу, потому что я думаю, что владелец знает, что он может определить тип поля. Спасибо за дополнение. – chalasr