我想创建一个新TwigLoader类并让它在 SymfonyTwigLoader类之前触发。
这个Stackoverflow 问题/答案很有帮助,但是我无法定义权重,因此只有在 Symfony 的加载器找不到模板时我的自定义加载器才会触发。
我希望该逻辑包含在我的包中,所以我不想:
TwigLoader定义我的习惯app/config.ymlTwigLoader目前,Symfony Twig 加载器要么使用默认的 Twig 加载机制,要么如果路径类似于@Bundle:Controller:Action.format.engine将尝试加载文件@Bundle/Resources/views/Controller/Action.html.twig。
就我而言,我希望能够映射@Bundle:Controller:Action.format.engine到一个完全不同的路径,如果该路径与现有文件不匹配,那么它应该依赖于默认行为(Symfony 的 Twig Loader)。
可能还有其他方法来解决该问题,但这似乎是完成任务的最合适方法。
我正在构建一个 BaseThemeBundle,我将在我的开源论坛项目中使用它,我希望能够轻松地将主题与捆绑包隔离,并可能做各种很酷的事情。:)
到目前为止,我已经创建了一个自定义的 Twig 加载器,看起来像Symfony 的 Twig 加载器。我创建了一个自定义模板定位器。
有什么想法、解决方案或改进吗?
为了使其能够与所有模板引擎一起使用,我认为您应该创建一个新的模板定位器(可能扩展 Symfony\Bundle\FrameworkBundle\Templated\Loader\TemplateLocator),并通过设置别名“template.html”来覆盖 DI 容器中的默认模板定位器。 locator”到您新创建的模板定位器。
为了让你的模板定位器类首先在你想要的文件夹中查找,你必须为新路径创建一个文件定位器(Symfony\Component\Config\FileLocatorInterface)并将其注入到你的模板定位器类中。
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |