我认为 Mustache 很棒,因为它允许使用局部,并且与 Smarty 相比,它也相对轻量级。我使用 Mustache 的想法是:定义一组组成 UI 库的部分。在这些部分中传递数据并像在类固醇上使用 html 元素一样使用它们。
部分的示例是列表元素(视觉上)。从标记的角度来看,该元素被定义为一个 20 行的 HTML 块。我想在循环中使用该部分,或者我可能想独立使用它。
如果我想建立一个包含上述部分的列表,我会这样做:
{{#my_list_elems}}
... Maybe some HTML code
{{> my_partial
{{/my_list_elems}}
假设 my_partial 如下所示:
<div>
<ul>
{{#another_array}}
<li>{{name}}</li>
{{>#another_array}}
</ul>
</div>
现在,经过几个小时的尝试,我的主模板看起来或多或少像这样:
{{> head}}
{{> header}}
<div>Some static HTML</div>
... More code
{{#some_array}}
{{> my_partial}}
{{/some_array}}
{{> footer}}
问题:由于某种原因,这对我不起作用。我尝试单独渲染部分,它可以工作。一个数组?嗯。
另外,我很难弄清楚,如果我真的让它工作,它将如何处理变量。目前,我正在渲染它:
$template = $this->mustache->loadTemplate('template');
$partials['my_partial'] = $this->mustache->loadPartial('my_partial');
$data['my_partial_arr'] = $this->getPartialData();
echo $template->render($data, $partials);
请注意,PHP 代码和部分示例并不意味着一起工作,它们只是示例。
问题是,是否支持此功能?如果是,我做错了什么?也许我的 PHP 数组没有正确的格式?我可以将数组/循环置于较低级别,在部分中,但是当我想单独使用部分时(将数据包装在一个 elem 数组中以便渲染),这会使其变得丑陋。