0

smarty テンプレート ファイルに ($abc} がある場合、$abc は PHP で nowdoc 構文を使用して構築されています。

$abc = <<<'EOT'
$key
EOT

smarty が最初に $abc を展開し、次に $abc 内にあるものを展開する方法、つまり $key も展開する方法はありますか。現在、$key の内部にあるものではなく、出力に文字列リテラル $key を取得しています。

これを行う理由

あちこちにコピーされているスニペットがいくつかあります。これらの tpl スニペットを独自のファイルに配置することもできますが、そうするとファイルが爆発的に増加します。したがって、これらのスニペットを含む単一のファイルがあります。しかし、この大きな共通スニペット ファイルをどこにでも含めることはできません。そこで、これらのスニペットを含む PHP ファイルを作成し、必要な場所で変数を使用することにしました。

4

2 に答える 2

1

smarty の eval 関数を使用することもできますが、PHP のドキュメントにあるように、「 nowdoc 内では解析は行われません」。

代わりにヒアドキュメントを使用できますか?

<?
$key = 'something';
$abc = <<<EOT
$key
EOT;

// {$abc} will print something;
?>
于 2013-02-06T06:22:32.020 に答える
0

これが探しているものかどうかわかりませんが、sprintf を使用しようとしましたか?

すなわち

<?
$key = 'something';
$abc='there is %s here';

それで

 {$abc|sprintf:$key}

「ここに何かがあります」と出力します

于 2013-02-06T12:32:31.600 に答える