我正在尝试制作一个带有胡子的模板。
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
。