如何在Smarty3中显示PHP变量中的模板部分?

时间:2014-09-08 15:16:43

标签: php smarty smarty3

我正在处理一项由其他人部分完成的任务。所以我在数据库中有一些文本,需要将它们添加到现有模板中。问题是,文本包含一些我想要显示的变量(它们被提供给模板)。现在我只能在里面看到大括号和变量名,而不是它的值。

PHP:

$var = "{$rest_name} offers good {$cuisine} food.";
$smarty->assign("rest_name", "My Rest");
$smarty->assign("cuisine", "thai");
$smarty->assign("desc", $var);

TPL:

{$desc}

显示{$rest_name} offers good {$cuisine} food.,但我希望看到My Rest offers good thai food.

我无法在PHP中执行此操作,因为应用程序的不同部分会传递数据,因此只能知道所有内容都是模板。

如何强制Smarty将PHP变量作为模板的一部分进行渲染?

1 个答案:

答案 0 :(得分:1)

首先需要在PHP中使用单引号{$rest_name} offers good {$cuisine} food.。否则,您会收到未定义变量的警告,因此PHP中的正确代码为:

$var = '{$rest_name} offers good {$cuisine} food.';
$smarty->assign("rest_name", "My Rest");
$smarty->assign("cuisine", "thai");
$smarty->assign("desc", $var);

在Smarty中你可以使用:

{include file="string:$desc"}

它会立即显示已解析的字符串。

您可以使用以下方式将其分配给变量:

{include file="string:$desc" assign="assigned"}
some other stuff here
{$assigned}

在这两种情况下,您都可以获得所需的输出:

  

My Rest提供美味的泰国菜。