从 mustache 视图中调用 php 函数并将 mustache 数组值传递给函数调用

Call php function in view from mustache and pass a mustache array value into the function call

我想将数组值传递给视图函数,以便它可以根据发送的值发回一些 HTML。我希望我的系统发回文本区域、文本框或单选按钮。

我的小胡子上有 {{#get_question}}{{type}}{{/get_question}},其中类型可以具有 ["input"、"radio"、"comment"] 中的任何值 我最头疼的是如何调用这个函数并传递参数。

我想要一个php函数get_question提取{{type}}中传递的值,如果type不是文本,我想将type的值传递给我的部分调用 {{>}} 并动态加载由 {{type}} 表示的部分 我从 Kohana 论坛获得了这段代码示例:

Hello, {{#caps }}{{ text }}{{/ caps }}!

    $m = new Mustache_Engine(array(
        'helpers' => array(
            'caps' => function() {return function($text, $m) {
                  return strtoupper($m->render($text));
            }}
        )
    ));

从我的角度来看,我似乎无法让它工作,因为我必须将它包含在另一个 function(){} 块中。

我该怎么做?

很头疼,因为你在和 Mustache 的基础作斗争:)

这与 "Mustache way" 相比有点倒退。不要试图通过 lambda 在逻辑中硬塞,你应该将逻辑提取到你的 view/viewmodel/model 中,并将你的模板限制为简单的部分和字符串插值。像这样的事情就可以了:

{{# questions }}
  {{# is_input }}{{> input }}{{/ is_input }}
  {{# is_radio }}{{> radio }}{{/ is_radio }}
  {{# is_comment }}{{> comment }}{{/ is_comment }}
{{/ questions }}

然后每个问题 view/viewmodel/model 将回答 is_input()is_radio()is_comment()