Php 在细枝加载器链的顶部添加新的细枝加载器

Php 在细枝加载器链的顶部添加新的细枝加载器,php,symfony,twig,Php,Symfony,Twig,我想创建一个新的TwigLoader类,并在Symfony的TwigLoader类之前触发它 这很有帮助,但是我无法定义权重,因此只有在Symfony的加载程序找不到模板时,我的自定义加载程序才会触发 我希望该逻辑包含在我的包中,这样我就不想: 在app/config.yml 覆盖Symfony的TwigLoader 当前,Symfony细枝加载程序或者返回默认细枝加载机制,或者如果路径类似于@Bundle:Controller:Action.format.engine将尝试加载文件@Bun

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

这很有帮助,但是我无法定义权重,因此只有在Symfony的加载程序找不到模板时,我的自定义加载程序才会触发

我希望该逻辑包含在我的包中,这样我就不想:

  • app/config.yml
  • 覆盖Symfony的TwigLoader
当前,Symfony细枝加载程序或者返回默认细枝加载机制,或者如果路径类似于
@Bundle:Controller:Action.format.engine
将尝试加载文件
@Bundle/Resources/views/Controller/Action.html.Twig

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

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

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

到目前为止,我已经创建了一个自定义细枝加载程序,看起来像。我创造了一个新的世界


有什么想法、解决方案或改进吗?

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


要使模板定位器类首先查看所需的文件夹,必须为新路径创建文件定位器(Symfony\Component\Config\FileLocatorInterface),并将其插入模板定位器类

每个人都明白使用这种加载程序试图解决什么问题,这对他们有用吗?也许你会在你的问题中添加“用例”?非常正确,我已经在我的问题中添加了上下文