在 Sonata Admin 列表中使用自定义列

Use custom column in Sonata Admin list

我用 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 中创建了一个新的项目,但我遇到了同样的问题。

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

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

我仔细看了下,发现编译出来的模板和我的模板不符

在我的老大Symfony3.4 projet上,编译后的模板和模板一样。

但我还是不知道为什么

这很可能是路径问题。棘手的是,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 或其他地方的任何地方。

ad yceruto在评论里说,我的twig extends的写法不好:

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

而不是

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