胡子加载视图动态


mustache loading view dynamically

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

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

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

在此之前一切正常。

基于下面的层次结构,我试图在我的主布局中加载一个类似的视图

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

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

我是lessrogic模板的新用户,所以我需要你的帮助。。。也许我想做的是不可能的。

感谢你将来的帮助。

如果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"。它在别名中查找"page",并确定您的意思是"page1",然后加载view/page1.mustache