如何在Mustache中更新模板加载器路径


How to update the template loader path in Mustache?

我正在尝试定义一个替代/默认模板加载器路径,以防第一个找不到。

目前我是这样初始化mustache的:

$m = new Mustache_Engine(array(
'loader' => new Mustache_Loader_FilesystemLoader($templates_path,array('extension'=>'.php'))
));

然后渲染模板:

$m->render($my_template_path, $fields);

在同一个Mustache实例下多次调用渲染方法。这工作得很好,但我不确定如何在不创建新Mustache实例的情况下更新加载器路径。

我一直在阅读文档,但还没有让它工作。我试过使用$loader->load()而不是渲染。这允许我更改路径,但它不呈现变量。

所以…我完全错过了CascadingLoader选项,它允许我设置多个加载器。通过将代码更新为:

,我获得了要加载的后备路径
$m = new Mustache_Engine(array(
    'loader'=> new Mustache_Loader_CascadingLoader(array(
               new Mustache_Loader_FilesystemLoader($templates_path,array('extension'=>'.php')),
               new Mustache_Loader_FilesystemLoader($alt_path,array('extension'=>'.php'))
    ))
));