{eval}
{eval} 用于将变量作为模板进行评估。这可以用于将模板标签/变量嵌入到变量或配置文件变量中。
属性
| 属性名 | 必需 | 描述 |
|---|---|---|
| var | 是 | 要评估的变量(或字符串) |
| assign | 否 | 将输出分配给模板变量的名称 |
如果提供了 assign 属性,{eval} 函数的输出将分配给该模板变量,而不是输出到模板中。
注意
评估的变量与模板一样处理。它们遵循相同的转义和安全功能,就像它们是模板一样。
每次调用时,评估的变量都会被编译,编译版本不会被保存!但是,如果启用了缓存,输出将与模板的其余部分一起进行缓存。
如果要评估的内容不经常更改或重复使用,请考虑使用
{include file="string:{$template_code}"}。这样可以缓存编译状态,因此不必在每次调用时运行(相对较慢的)编译器。
示例
配置文件 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>.
这将输出服务器名称(大写)和 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}