我想创建一个新的TwigLoader
类,并在Symfony的TwigLoader
课程之前触发它。
这个Stackoverflow question/answer很有帮助但是我无法定义权重因此我的自定义加载器只有在Symfony的加载器找不到模板时才会触发。
我希望这个逻辑包含在我的捆绑中,所以我不想要:
TwigLoader
app/config.yml
TwigLoader
目前,Symfony Twig加载程序要么退回到默认的Twig加载机制,要么路径类似于@Bundle:Controller:Action.format.engine
将尝试加载文件@Bundle/Resources/views/Controller/Action.html.twig
。
在我的情况下,我希望能够将@Bundle:Controller:Action.format.engine
映射到完全不同的路径,如果该路径与现有文件不匹配,那么它应该依赖于默认行为(Symfony&#39) ; s Twig Loader)。
可能有其他方法可以解决这个问题,但它似乎是完成任务的最合适方式。
我正在构建一个BaseThemeBundle,我将在我的开源论坛项目中使用它,我希望能够轻松地从捆绑包中分离主题,并可能做各种很酷的事情。 :)
到目前为止,我已经创建了一个类似Symfony's Twig loader的自定义Twig加载器。我创建了custom Template locator。
任何想法,解决方案或改进?
答案 0 :(得分:0)
为了使用所有模板引擎,我认为您应该创建一个新的模板定位器(可能扩展Symfony \ Bundle \ FrameworkBundle \ Templating \ Loader \ TemplateLocator)并通过设置别名在DI容器中覆盖默认模板定位器" templating.locator"到新创建的模板定位器。
要使模板定位器类首先查看所需的文件夹,必须为新路径创建文件定位器(Symfony \ Component \ Config \ FileLocatorInterface)并将其注入模板定位器类。