在Sonata管理员列表中使用自定义列

时间:2018-06-22 20:29:04

标签: symfony sonata-admin sonata

我使用Symfony 4.1创建了一个项目,并安装了Sonata Admin Bundle。

在我的类别列表中,我尝试添加与类别字段无关的列

所以我做了

/* Admin/CategoryAdmin.php */

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

还有我的模板。

{# templates/template_test.html.twig #}

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

{% block field %}
    TEST
{% endblock %}

该列已创建,但为空。我做错了什么? 这是我的测试项目:https://github.com/AntoineLemaire/sonata-admin-issue/commits/master

我用Symfony 3.4进行了另一个大型项目,该项目运行正常,因此我在3.4中创建了一个新的projet,但是遇到了同样的问题。

没有错误消息,我的专栏只留空

----------编辑-----------

我的外观更好,它表明已编译的模板与我的模板不匹配

enter image description here

在我的旧的大型Symfony3.4 Projet上,编译后的模板与模板相同。

但是我仍然不知道为什么

2 个答案:

答案 0 :(得分:2)

Ad yceruto在评论中说,我的树枝延伸符号不好:

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

代替

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

答案 1 :(得分:1)

这很可能是路径问题。棘手的是,configureList函数不会给您任何错误(其他类似configureForm中的错误)。它显示该列,尝试匹配对象中的属性,但如果没有属性,则将其留空。仔细检查您的路径。我认为您指向的文件路径错误。

您写

{# templates/template_test.html.twig #}

但是你指向

'template' => 'template_test.html.twig',

奏鸣曲正在寻找app/Resources/view/template_test.html.twig

但是您的评论说它在app/Resources/view/templates/template_test.html.twig或其他任何地方。