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 中不进行解析”。

你能用heredoc代替吗?

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

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

不确定这是否是您正在寻找的,但您是否尝试过使用 sprintf?

IE

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

所以

 {$abc|sprintf:$key}

会打印“这里有东西”

于 2013-02-06T12:32:31.600 回答