当我想为实体的创建和编辑视图创建自定义模板时遇到问题。
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
谢谢您的帮助。
答案 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一起使用。