1

我正在尝试制作带有小胡子的模板。

layout.mustache
-- view/page1.mustache
-- view/page2.mustache
-- view/page3.mustache

我将加载程序设置为 layout.mustache,将部分设置为视图目录。

直到这一切都好。

基于遵循的层次结构,我试图在我的主布局中加载一个视图,比如

$m->render('layout', array('page' => 'page1'));

在我的布局中{{> page}}它不起作用。它返回“page1”它没有加载胡子文件......

我是lesslogic模板的新用户,所以我需要你的帮助......也许我正在尝试做的事情是不可能的。

感谢您对未来的帮助。

4

1 回答 1

1

如果 Mustache 支持这样的东西,它看起来像{{> {{page}} }},因为你说的不是“加载页面模板”,而是“加载名为(页面变量的值)的模板”。这在很大程度上是在“逻辑”方面,所以它不是 Mustache 支持的东西。

也就是说,你可以做你想做的事,你只需要有点创意:)

你可以使用类似文件系统别名加载器的东西来劫持 Mustache 的部分加载器。

然后你会用它作为部分加载器来实例化 Mustache:

$m = new Mustache_Engine(array(
    'partials_loader' => FilesystemAliasLoader('path/to/views')
));

现在,就在渲染之前,您将为page部分设置别名:

$m->getPartialsLoader()->setTemplate('page', 'page1');
$m->render('layout', $data);

当 Mustache 到达您的{{> page }}部分时,它会要求 FilesystemAliasLoader 加载“页面”。它在其别名中查找“page”,并确定您的意思是“page1”,然后加载view/page1.mustache

于 2013-08-12T20:19:19.300 回答