gpt4 book ai didi

templates - 如何在 Symfony2 环境中注册另一个(自定义)Twig 加载器?

转载 作者:行者123 更新时间:2023-12-04 14:47:14 25 4
gpt4 key购买 nike

我想从我的 Symfony2 应用程序中的数据库加载某些 Twig 模板,同时仍然保留使用 native 加载器在标准文件系统位置呈现模板的可能性。如何实现这一目标?

据我所知,不可能将多个加载器注册到 Twig 环境。我一直在思考两种方式(目前):

  • Replace the default loader使用自定义代理类。当使用标准@Bundle-notation 引用模板时,代理会将请求传递给默认加载器。在其他情况下,请求将传递给我的自定义(数据库)加载器;或
  • 建立一个全新的 Twig 环境。此方法需要在两个环境中注册自定义 Twig 扩展,并且它不允许交叉引用来自不同来源的模板(一些来自 @Bundles,一些来自数据库)


  • 更新 1:

    Twig 似乎支持 Twig_Loader_Chain可以在我的第一个选项中使用的类。尽管如此,默认加载器应该可以访问并作为第一个选项传递给链。

    最佳答案

    要使用 Twig_Loader_Chain,您需要 Symfony 2.2
    https://github.com/symfony/symfony/pull/6131
    然后你可以简单地配置你的加载器:

    services:
    twig.loader.filesystem:
    class: %twig.loader.filesystem.class%
    arguments:
    - @templating.locator
    - @templating.name_parser
    tags:
    - { name: twig.loader }
    twig.loader.string:
    class: %twig.loader.string.class%
    tags:
    - { name: twig.loader }

    更新:
    看起来仍然存在一些问题(文件系统加载器有时找不到模板)但我发现了这个:
    http://forum.symfony-project.org/viewtopic.php?t=40382&p=131254

    似乎工作得很好!

    关于templates - 如何在 Symfony2 环境中注册另一个(自定义)Twig 加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343435/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com