symfony - 为 Twig 模板定义自定义文件系统路径

标签 symfony twig

我已经读过 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/

相关文章:

php - 使用带渲染的 twig 文件调用 Controller 函数在 symfony 中不起作用

unit-testing - 仅当在 Symfony 2.8 中进行单元测试时,服务类中的 Twig_Environment 才会导致 DIC RuntimeExtension

symfony - 两个项目共享相同的实体——如何维护代码?

php - symfony 在登录期间更改路由中的语言环境

symfony - behat.yml 中的参数

symfony - 回显变量获取 "Resource id"

Twig getSource block

php - 在 Symfony 3.3 中使用 DI 在抽象类中 Autowiring ,这可能吗?

php - 使用 Doctrine 和 Symfony 插入数据库 - 外键不插入

php - 如何停止或摆脱 Twig 循环?