1

賢い変数出力ブロックで「@」記号をエスケープする方法が見つからないようです。

これが私のセットアップです:

$data = array("myvar@display"=>4534534);
$smarty->assign($data); 

docoの割り当てはこちら

私のテンプレートファイルでは:

<body>
 {$myvar@display}
</body>

出力:

Message: Undefined property: Smarty_Variable::$display

「@」記号を変更せずにそれを表示する方法についてのアイデア (これはアプリケーション全体で使用される規則であり、これを制御できないため、これを変更することはできません)

LAMP 5.2.17、Smarty 3 の実行


PS私は成功せずにこれを試しました...

{assign var=jason value="$myvar@display"}{eval var=$jason}

出力

4534534@display
4

1 に答える 1

2

smarty 3 (タグ {php} が無効になっている) で私が目にする唯一の方法は、新しい変数を割り当てることです。

PHPコードのどこかにアクセスできる場合は、次のように入力できます。

$smarty->assign('at','@');

tpl で var 名を取得します。

{$myvar{$at}display}

複雑な変数名の背後にあるロジックを作り直すよりも簡単だと思います。

または、タグ {php} を有効にして、smarty プライベート配列のインデックスを取得してみてください。

編集

これは私のために働く

{assign var=foo value='myvar@display'}
{${$foo}}
于 2012-04-28T08:32:48.783 に答える