【问题标题】:mustache loading view dynamically小胡子动态加载视图
【发布时间】:2013-08-13 04:19:19
【问题描述】:

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

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

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

到此为止没关系。

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

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

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

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

感谢您未来的帮助。

【问题讨论】:

    标签: php mustache


    【解决方案1】:

    如果 Mustache 支持这样的事情,它看起来像{{> {{page}} }},因为你说的不是“加载页面模板”,而是“加载名为(页面变量的值)的模板”。这非常符合“逻辑”方面的要求,因此 Mustache 不支持。

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

    您可以使用 the filesystem alias loader here 之类的东西劫持 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      相关资源
      最近更新 更多