[Symfony 3] [Sonata Admin] setTemplate问题

时间:2018-10-29 13:20:24

标签: symfony service sonata-admin

当我想为实体的创建和编辑视图创建自定义模板时遇到问题。

Unable to find template "AppBundle:Admin:Estate:edit.html.twig" (looked into: C:\wamp64\www\ibg\vendor\knplabs\knp-menu\src\Knp\Menu/Resources/views, C:\wamp64\www\ibg\vendor\symfony\symfony\src\Symfony\Bridge\Twig/Resources/views/Form).

Services.yml

app.admin.estate:
    class: AppBundle\Admin\EstateAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, label: "Biens immobiliers" }
    arguments:
        - ~
        - AppBundle\Entity\Estate
        - ~
    calls:
         - [ setTemplate, [edit, AppBundle:Admin/Estate/edit.html.twig]]
    public: true

我测试了setTemplate的很多语法,但始终显示相同的消息

- [ setTemplate, [edit, AppBundle:Admin:Estate:edit.html.twig]]
- [ setTemplate, [edit, AppBundle:Admin/Estate:edit.html.twig]]
- [ setTemplate, [edit, AppBundle/Resources/views/Admin/Estate/edit.html.twig]]

The service "app.admin.estate.template_registry" has a dependency on a non-existent service "App/Admin/Estate:edit.html.twig".

当我使用

- [ setTemplate, [edit,"@App/Resources/views/Admin/Estate/edit.html.twig"]]
- [ setTemplate, [edit,"@App/Admin/Estate/edit.html.twig"]]
- [ setTemplate, [edit,"@App\Admin\Estate\edit.html.twig"]]

我的树枝文件的路径是     src \ AppBundle \ Resources \ views \ Admin \ Estate \ edit.html.twig

我不明白... 我有一个带有奏鸣曲和symfony的旧项目,并且效果很好

- [ setTemplate, [edit, AppBundle:Admin/Exemple:exemple.html.twig]]

Sonata管理员版本3.40.2

Symfony 3.4.17

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在我的脑袋上撞了一下之后,我发现解决方案(破解?)是在树枝名称的前面加上另一个@符号。例如:

- [ setTemplate, [edit,"@@App/Admin/Estate/edit.html.twig"]]

这可以防止“不存在的服务”错误,并在解析树枝位置时在Twig_Loader_Filesystem中正确识别名称空间(App)。我找不到任何官方文档来将其解释为一件正式的事情,但目前仍然有效。

对于将来的搜索者,它可以与Symfony 3.4.18,Sonata Admin 3.40.3和Twig 2.5.0一起使用。