Mustache将数据发送到php函数?

时间:2014-01-17 11:36:45

标签: php mustache

我的网络应用程序上有不同的语言。

现在我想写一下:在胡子文件中关于我们。

但是根据用户选择的语言(视图/控制器中的逻辑),它应该显示关于我们的正确翻译。

翻译将是我存储的确切词语:关于我们

我见过另一个这样做的web应用程序:

{{#lang}}About us{{/lang}}

但我不明白这是如何运作的?视图模型中的lang()方法如何在#lang,“关于我们”中获取数据 - 然后将其替换为其他内容(如果存在)。

(从数据库或文件中获取翻译的程序,与“关于我们”匹配我不需要知道

我不知道有可能像这样反转,将“关于我们”发送到视图模型中的lang()方法?

希望有人可以解释并举例说明。感谢

在我看来,这就是我的尝试:

public function lang($input)
{
    return "test" . $input;
}

但这不起作用。 (没有参数传递给lang())

我在MVC框架中使用Mustache(Kostache)和PHP(kohana)

2 个答案:

答案 0 :(得分:0)

假设您将胡须定义为$m,则在解析模板时,以下内容会添加函数lang

这里的关键是在渲染时将函数传递给小胡子。

$data = new StdClass;
$data->lang = function($text) {
    return "Requested lang: $text";
}

$m.render($template, $data);

此模板

{{#lang}}About us{{/lang}}

会变成

Requested lang: About us

答案 1 :(得分:0)

经过很多头痛,google结果非常糟糕,如果你使用Kostache 2和Kohana 3.2 / 3.0,这里是正确的解决方案:

简单地说,在Mustache_Engine初始化的factory()方法的Kohana_Kostache类中,你添加了一个辅助函数:

'helpers' => array(
                    'i18n' => function($text) {
                        return __($text);
                    }),

由于我使用Kohana翻译系统,我将其称为i18n并返回__($ text),如果存在则翻译为$ text。