PHP-循环中的胡须部分

PHP-循环中的胡须部分,php,mustache,Php,Mustache,我认为Mustache很棒,因为它允许使用partials,而且与Smarty相比,它也相对轻巧。我使用Mustache的想法是:定义一组组成UI库的部分。在这些部分中传递数据,并像在类固醇中使用html元素一样使用它们 分部代码的一个示例是列表元素(可视)。从标记的角度来看,该元素被定义为一个20行的HTML块。我想在循环中使用该部分,或者我可能想独立使用它 如果我想建立一个包含上述部分的列表,我会这样做: {{#my_list_elems}} ... Maybe some HTML cod

我认为Mustache很棒,因为它允许使用partials,而且与Smarty相比,它也相对轻巧。我使用Mustache的想法是:定义一组组成UI库的部分。在这些部分中传递数据,并像在类固醇中使用html元素一样使用它们

分部代码的一个示例是列表元素(可视)。从标记的角度来看,该元素被定义为一个20行的HTML块。我想在循环中使用该部分,或者我可能想独立使用它

如果我想建立一个包含上述部分的列表,我会这样做:

{{#my_list_elems}}
 ... Maybe some HTML code
 {{> my_partial
{{/my_list_elems}}
<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);
假设我的部分看起来像这样:

{{#my_list_elems}}
 ... Maybe some HTML code
 {{> my_partial
{{/my_list_elems}}
<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数组没有正确的格式?我可以将数组/循环放在一个较低的级别,在分部中,但是当我想单独使用分部时(将数据包装在一个元素数组中以便呈现),这会让它看起来很难看。

所以
{{{>head}
{>header}
{>footer}
分部工作,但是
{>myu-partial}
不工作?您是使用文件系统部分加载程序,还是将部分作为字符串传递给Mustache构造函数

有两件事可能会吸引你:

<> > SUBACHE可能不认为您的数组(<代码> MySuthAlpLaARR )是“可重复的”。php wiki。您可以通过
array\u values()
运行它们,以确保它们将被循环,而不是用作节上下文

  • 您不能在胡子模板上向传递分部

    在大多数情况下,将partials作为第二个参数传递不会引起问题,因为该函数无论如何都不会接受第二个参数。。。它只需通过
    loadPartial()
    在您的Mustache实例上加载任何必要的部分


  • 是的,其他一切都很好,除了循环部分,我认为它是#1-只需要运行一个测试,然后会回来跟进。关于#2,你说得对,那有多傻?:)我使用的数组是由array_map()生成的,我错误地认为它会返回一个数组(读:不是散列)。我错了,我传递给array_map()的第二个参数跳过了一些索引,这是另一个lol,因为数组是array_unique()调用的结果。精神崩溃。谢谢你的帮助。