我已经读过 How does Symfony2 detect where to load templates from?以及网络上的其他大量文章
这个问题和我的很相似,但是答案并不全面。
我需要覆盖另一个自定义包内的包定义模板。换句话说,我想指定另一个路径,symfony 在加载模板时在查看 app/Resources 之前必须查看该路径。
工作流程应该是这样的:
首先:/src/My/Bundle/Resources/views/example.html.twig(或/src/My/Bundle/OriginalBundle/views/example.html.twig)
然后:/app/Resources/OriginalBundle/views/example.html.twig
最后:/src/Original/Bundle/Resources/views/example.html.twig
标准的 app/Resources -> src/Original/Bundle 是不够的。
抱歉我的英语不好,谢谢
最佳答案
有一个 native 功能可以很好地完成您想要的事情。本质上,您可以像这样在 app/config.yml 中的 twig 配置中添加一个 twig 命名空间:
twig:
# ...
paths:
"%kernel.root_dir%/../vendor/acme/foo-bar/templates": foo_bar
这会为文件夹 vendor/acme/foo-bar/templates
创建一个别名,然后您可以使用它从 Controller 呈现您的模板:
return $this->render(
'@foo_bar/template.html.twig',
$data
);
或来自其他 Twig 模板
{% include '@foo_bar/template.html.twig' %}
来源:官方食谱http://symfony.com/doc/current/cookbook/templating/namespaced_paths.html
关于symfony - 为 Twig 模板定义自定义文件系统路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20050384/