我想创建一个新的TwigLoader
类,并在Symfony的TwigLoader
类之前触发它。
这个Stackoverflow问题/答案很有帮助,但是我无法定义权重,因此只有在Symfony的加载器找不到模板时,我的自定义加载器才会触发。
我希望该逻辑包含在我的包中,因此我不想:
app/config中定义我的自定义TwigLoader
。yml
当前,Symfony细枝加载程序要么返回默认细枝加载机制,要么路径类似于@Bundle:Controller:Action。总体安排引擎将尝试加载文件
@Bundle/Resources/views/Controller/Action。html。细枝
。
在我的例子中,我希望能够映射@Bundle:Controller:Action。总体安排引擎
指向一个完全不同的路径,如果该路径与现有文件不匹配,则应返回默认行为(Symfony的细枝加载程序)。
也许还有其他方法来解决这个问题,但这似乎是完成任务的最合适的方法。
我正在构建一个BaseThemeBundle,我将在我的开源论坛项目中使用它,我希望能够轻松地将主题从捆绑包中分离出来,并有可能做各种很酷的事情。:)
到目前为止,我已经创建了一个自定义细枝加载器,它看起来像Symfony的细枝加载器。我已经创建了一个自定义模板定位器。
有什么想法、解决方案或改进吗?
为了与所有的模板引擎一起工作,我认为你应该创建一个新的模板定位器(也许扩展Symfony\Bundle\FrameworkBundle\Temta\Loader\TemplateLocator),并通过将别名templating.locator设置为新创建的别名来覆盖DI容器中的默认值模板定位器。
要使模板定位器类首先查看所需的文件夹,必须为新路径创建文件定位器(Symfony\Component\Config\FileLocatorInterface),并将其插入模板定位器类。