Smarty 图标

你可根据商标通知使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

如需赞助、广告、新闻或其他问题,请通过以下渠道联系我们

使用 Smarty 的网站

广告

{eval}

{eval} 用于将变量作为模板进行计算。这可以用于将模板标记/变量嵌入到变量或将标记/变量嵌入到配置文件变量中。

如果你提供了 assign 属性,则 {eval} 函数的输出会分配给此模板变量,而不是输出到模板。

属性名称 类型 是否必需 默认值 说明
var 混合 要计算的变量(或字符串)
assign 字符串 分配输出的模板变量

技术提示

  • 计算的变量与模板的处理方式相同。它们遵循与模板相同的转义和安全特性。

  • 计算的变量在每次调用时都得到编译,编译后的版本不会保存!然而,如果你启用了缓存,输出会与模板的其余部分一起缓存。

  • 如果要计算的内容不常更改或重复使用,可考虑改用 {include file="string:{$template_code}"}。这可能会缓存编译状态,进而无需在每次调用时运行(相对较慢的)编译器。

示例 8.3 {eval}

配置文件 setup.conf 的内容。

emphstart = <strong>
emphend = </strong>
title = Welcome to {$company}'s home page!
ErrorCity = You must supply a {#emphstart#}city{#emphend#}.
ErrorState = You must supply a {#emphstart#}state{#emphend#}.

  

模板所在位置

{config_load file='setup.conf'}

{eval var=$foo}
{eval var=#title#}
{eval var=#ErrorCity#}
{eval var=#ErrorState# assign='state_error'}
{$state_error}

  

上述模板会输出

This is the contents of foo.
Welcome to Foobar Pub & Grill's home page!
You must supply a <strong>city</strong>.
You must supply a <strong>state</strong>.

  

示例 8.4 另一个 {eval} 示例

这会输出服务器名(大写)和 IP。已分配的变量 $str 可能来自数据库查询。

 
<?php
$str = 'The server name is {$smarty.server.SERVER_NAME|upper} '
       .'at {$smarty.server.SERVER_ADDR}';
$smarty->assign('foo',$str);
?>
 
   

模板所在位置

 
    {eval var=$foo}