【问题标题】:How to display in Smarty3 part of template which is in a PHP variable?如何在 PHP 变量中的模板的 Smarty3 部分中显示?
【发布时间】:2014-09-08 15:16:42
【问题描述】:

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

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 变量呈现为模板的一部分?

【问题讨论】:

  • 加载你的小sn-p作为模板做替换然后在你的主模板中包含那个模板我不相信smarty支持你想做的包容性替换虽然阅读它的文档它可能允许子如果您传入一个数组,则模板包含替换。但问题是您的 $var 不在您的主模板中,它只是一个变量(尽管我猜您可以使用 php 替换而不是 smarty 替换)

标签: php smarty smarty3


【解决方案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 提供美味的泰国菜。

【讨论】:

  • 工作如地狱,谢谢。我已经找到了 string:xxx 但没有正确得到它。感谢您的解释。
  • @Kania 不客气。您还可以使用string: 来解析 PHP 中的 Smarty 字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 2019-07-22
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
相关资源
最近更新 更多