小胡子动态加载视图

时间:2013-08-12 15:40:17

标签: php mustache

我正在尝试用胡子制作模板。

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

我将loader设置为layout.mustache,将partials设置为view目录。

直到这没关系。

基于所遵循的层次结构,我正在尝试使用类似

的方式在主布局中加载视图
$m->render('layout', array('page' => 'page1'));

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

我是lesslogic模板中的新用户,所以我需要你的帮助......也许我正在努力做到这一点不可能。

感谢您对未来的帮助。

1 个答案:

答案 0 :(得分:1)

如果Mustache支持这样的事情,它看起来像{{> {{page}} }},因为你所说的不是“加载页面模板”,而是“加载名为(页面变量的值)的模板”。这就是该系列的“逻辑”方面,所以这不是Mustache支持的东西。

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

你可以使用类似the filesystem alias loader here的东西劫持Mustache的部分加载器。

然后你将Mustache实例化为partials loader:

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

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

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

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