1

私の PHP アプリケーションでは、テンプレート化に Smarty を使用し、いくつかのカスタム関数を使用しています。以下の例では、関数名は "key" 属性を取る "text" です。この関数は、キーに基づいて文字列値を取得します

以下の例は、問題なく正常に動作します。

{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);
}
4

1 に答える 1

2

catフィルターを使用したソリューション:

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

または、文字列を二重引用符で囲んで追加し、変数部分を内側の引用符でマークすることもできます。

{text key="isearch+`$plugin`_plugin"}
于 2014-05-18T17:06:55.120 に答える