如何在mustache.php中使用函数包装器?

如何在mustache.php中使用函数包装器?,php,mustache,mustache.php,Php,Mustache,Mustache.php,我开始在PHP上使用Mustach,但我无法使包装器函数作为债务使用 我有这个模板 {{#skill_level}} <span class="stars"> {{#stars}} {{skill_level}} {{/stars}} </span> {{/skill_level}} 但它不起作用 我明白了 <span class="stars"> .....

我开始在PHP上使用Mustach,但我无法使包装器函数作为债务使用

我有这个模板

{{#skill_level}}
  <span class="stars">
    {{#stars}}
      {{skill_level}} 
    {{/stars}}                        
  </span>
{{/skill_level}}
但它不起作用

我明白了

<span class="stars">
    .....                        
</span>
然后处理
{{skill\u level}
,但它不会发送到
{{{start}}
,获得的渲染是

<span class="stars">
    3                        
</span>

3.

有人知道我做错了什么吗?我应该如何编写模板以使其工作?欢迎提供任何建议或经验。谢谢。

我在

传递的文本是未渲染的文本块

但它提供了一个
Mustache\u LambdaHelper
,可用于呈现传递的文本

因此,我必须将其添加到lambda函数中:

$data->stars = function($label, Mustache_LambdaHelper $helper) {     
  $aux = "";
  $level = $helper->render($label);
  $l = intVal($level);
  for ($i = 0; $i < $l; $i++) {
    $aux .= "+";
  }
  for ($i = $l; $i < 5; $i++) {
    $aux .= ".";
  }
  return $aux;
};
$data->stars=函数($label,Mustache\u LambdaHelper$helper){
$aux=“”;
$level=$helper->render($label);
$l=intVal($level);
对于($i=0;$i<$l;$i++){
$aux.=“+”;
}
对于($i=$l;$i<5;$i++){
$aux.=”;
}
返回$aux;
};

这就是让它工作所需要的一切。感谢所有读者

我会为你的lambda编写如下代码:
{{ #skill_level }}
  <span class="stars">
    {{ #stars }}
      {{ skill_level }} 
    {{ /stars }}                        
  </span>
{{ /skill_level }}
<span class="stars">
    3                        
</span>
$data->stars = function($label, Mustache_LambdaHelper $helper) {     
  $aux = "";
  $level = $helper->render($label);
  $l = intVal($level);
  for ($i = 0; $i < $l; $i++) {
    $aux .= "+";
  }
  for ($i = $l; $i < 5; $i++) {
    $aux .= ".";
  }
  return $aux;
};