我正在处理一项由其他人部分完成的任务。所以我在数据库中有一些文本,需要将它们添加到现有模板中。问题是,文本包含一些我想要显示的变量(它们被提供给模板)。现在我只能在里面看到大括号和变量名,而不是它的值。
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变量作为模板的一部分进行渲染?
答案 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提供美味的泰国菜。