Sonata管理员列表字段模板被忽略

时间:2018-06-29 19:31:59

标签: symfony twig sonata-admin symfony4 sonata

我正在使用Symfony 4.1.1和Sonata Admin Bundle 3.35.2。

我想为管理员列表视图中的字段使用自定义模板。该模板将被忽略。我正在使用Twig作为模板引擎。

在管理员中:

# /src/Admin/ImageAdmin.php

protected function configureListFields(ListMapper $listMapper) {
    $listMapper
        ->add('filename', 'string', ['template' => 'list_image.html.twig'])
    ;
}

模板:

# /templates/list_image.html.twig

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field %}
    <img src="{{ value }}" style="width: 200px" />
{% endblock %}

3 个答案:

答案 0 :(得分:0)

应该是

# /templates/list_image.html.twig

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field %}
 <div>
    <img src="{{ object.filename }}" style="width: 200px" />
 </div>
{% endblock %}

SRC只是文件名-不是文件的完整路径,因此不会打印图像。也解决该问题。

另一个问题是,您获得了一些神秘的价值吗?我看不到您在哪里分配价值。

您可以通过编写object.fieldname来访问对象的吸气剂。此功能用作当前对象的打印吸气剂功能。

答案 1 :(得分:0)

我遇到了同样的问题(Symfony 4.1),请从此处Use custom column in Sonata Admin list尝试解决方案 所以改变:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

收件人:

{% extends '@SonataAdmin/CRUD/base_list_field.html.twig' %}

它确实为我工作。问题是,即使您的位置是正确的(经过一些实验我也知道了)并且您扩展了错误的模板,也不会出现任何错误。

答案 2 :(得分:0)

可能会有点晚,但是对于遇到像我这样的相同问题的每个人-我已经通过在twig.yaml中为管理模板创建特定路径解决了此问题,只需创建子文件夹_admin或尝试使用' template /':'admin'将文件保存在原处(尚未测试这种可能性)

# /config/packages/twig.yaml
twig:
    paths:
        'templates/_admin/': 'admin'


# /src/Admin/ImageAdmin.php
protected function configureListFields(ListMapper $listMapper) {
    $listMapper
        ->add('filename', 'string', ['template' => '@admin/list_image.html.twig'])
    ;
}