gpt4 book ai didi

php - 在 Twig Loader 链的顶部添加新的 Twig Loader

转载 作者:可可西里 更新时间:2023-10-31 23:48:07 25 4
gpt4 key购买 nike

我想创建一个新的 TwigLoader 类并让它在 Symfony 的 TwigLoader 类之前触发。

Stackoverflow question/answer很有帮助,但是我无法定义权重,因此只有当 Symfony 的加载器找不到模板时,我的自定义加载器才会触发。

我希望该逻辑包含在我的包中,所以我不想想:

  • app/config.yml 中定义我的自定义 TwigLoader
  • 覆盖 Symfony 的 TwigLoader

目前,Symfony Twig 加载器要么退回到默认的 Twig 加载机制,要么如果路径类似于 @Bundle:Controller:Action.format.engine 将尝试加载文件 @Bundle/Resources/views/Controller/Action.html.twig

在我的例子中,我希望能够将 @Bundle:Controller:Action.format.engine 映射到一个完全不同的路径,如果该路径与现有文件不匹配,那么它应该退回到默认行为(Symfony 的 Twig Loader)。

可能有其他方法可以解决这个问题,但它似乎是完成任务的最合适方法。

我正在构建一个 BaseThemeBundle,我将在我的开源论坛项目中使用它,我希望能够轻松地将主题与 bundle 隔离开来,并可能做各种很酷的事情。 :)

到目前为止,我已经创建了一个看起来像 Symfony's Twig loader 的自定义 Twig 加载器.我创建了一个 custom Template locator .

任何想法、解决方案或改进?

最佳答案

为了让它与所有模板引擎一起工作,我认为你应该创建一个新的模板定位器(可能扩展 Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator)并通过设置别名在 DI 容器中覆盖默认值“templating.locator”到您新创建的模板定位器。

为了让你的模板定位器类首先在你想要的文件夹中查找,你必须为新路径创建一个文件定位器(Symfony\Component\Config\FileLocatorInterface)并将其注入(inject)到你的模板定位器类中。

关于php - 在 Twig Loader 链的顶部添加新的 Twig Loader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22883763/

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