【问题标题】:Mustache send the data to php function?Mustache 将数据发送到 php 函数?
【发布时间】:2014-01-17 11:36:44
【问题描述】:

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

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

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

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

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

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

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

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

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

希望有人可以举例说明。谢谢

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

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

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

我在 MVC 框架 (kohana) 中将 Mustache (Kostache) 与 PHP 一起使用

【问题讨论】:

    标签: php mustache


    【解决方案1】:

    假设您将 mustache 定义为 $m,以下将在解析模板时添加函数 lang

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

    $data = new StdClass;
    $data->lang = function($text) {
        return "Requested lang: $text";
    }
    
    $m.render($template, $data);
    

    这个模板

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

    会变成

    Requested lang: About us
    

    【讨论】:

    • 你好。我不能像这样为 $data->lang 创建一个函数,这会产生语法错误?
    【解决方案2】:

    经过很多头痛,谷歌搜索结果非常糟糕,如果您使用 Kostache 2 和 Kohana 3.2/3.0,以下是正确的解决方案:

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

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

    由于我使用的是 Kohana 翻译系统,所以我将其命名为 i18n,它返回 __($text),即如果存在则翻译的 $text。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 2019-04-11
      • 2013-01-31
      • 2019-01-07
      • 1970-01-01
      相关资源
      最近更新 更多