如何使用Sonata Admin Bundle列表视图轻松显示换行符

时间:2013-01-31 15:12:42

标签: newline symfony-2.1 sonata-admin

我应该如何在SonataAdminBundle的列表视图表中添加换行符?

我在我的实体中添加了一个函数:

getTest() {
    return "test 1 \n test 2";
}

在我的configureListFields函数中,我以这种方式添加字段:

$listMapper->add('test', null, array('label' => 'Test'))

我也尝试将类型更改为textstringdoctrine_orm_text,但它没有帮助。

使用<br />代替\n无法帮助收集,因为输出已转换为html实体。

2 个答案:

答案 0 :(得分:1)

有一种更简单的方法:

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->add('message', null, array(
            'template' => 'SensioPlatformBundle:Admin:AuditTrail/message.html.twig',
        ))
    //...

然后在你的模板中:

<td>
    {{ value|nl2br }}
</td>

答案 1 :(得分:0)

我发现了一种可能性:覆盖文本模板的base_list_field.html.twig模板:在定义块nl2br时添加field过滤器:

list_text_field.html.twig

<td class="sonata-ba-list-field sonata-ba-list-field-{{ field_description.type }}" objectId="{{ admin.id(object) }}">
{% if
        field_description.options.identifier is defined
    and field_description.options.route is defined
    and admin.isGranted(field_description.options.route.name == 'show' ? 'VIEW' : field_description.options.route.name|upper, object)
    and admin.hasRoute(field_description.options.route.name)
%}
    <a href="{{ admin.generateObjectUrl(field_description.options.route.name, object, field_description.options.route.parameters) }}">
        {%- block field %}{{ value|nl2br }}{% endblock -%}
    </a>
{% else %}
    {{ block('field') }}
{% endif %}
</td>

config.yml

sonata_doctrine_orm_admin:
    templates:
        types:
            list:
                text: YourBundle:Admin:list_text_field.html.twig

configureListFields

$listMapper->add('test', 'text', array('label' => 'Test'))