将变量传递给smarty函数

时间:2014-05-18 17:05:33

标签: smarty smarty3 smarty2

在我的PHP应用程序中,我使用Smarty进行模板化并使用一些自定义函数。在下面的示例中,函数名称是“text”,它采用“key”属性。此函数将根据键

获取字符串值

以下示例可以正常运行。

{text key='isearch+login_name'}

我要做的是将值动态传递给属性。在下面的代码中,变量$ plugin将具有dynmaci值并希望被替换。

{text key='isearch+$plugin_plugin'}

使用上面的代码,我得到'isearch + $ plugin_plugin'的输出而不是正确的字符串值。

Smarty功能的PHP函数如下。

function smarty_function_text($params, $smarty)
{
    $key = $params['key'];
    unset($params['key']);

    $key = explode('+', $key);

    return OW::getLanguage()->text($key[0], $key[1], $params);
}

1 个答案:

答案 0 :(得分:2)

使用cat过滤器的解决方案:

{text key="isearch+"|cat:$plugin|cat:"_plugin"}

或者,您可以只用双引号添加字符串,并使用内部引号标记变量部分:

{text key="isearch+`$plugin`_plugin"}