什么是 Smarty?
为何使用它?
用例和工作流程
语法比较
模板继承
最佳实践
速成课程
{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}