{$smarty} 保留变量
PHP 保留变量 {$smarty} 可用于访问多个环境和请求变量。下面是完整的列表。
请求变量
可以通过以下示例访问请求变量,例如 $_GET、$_POST、$_COOKIE、$_SERVER、$_ENV 和 $_SESSION:
{* 显示来自 URL ($_GET) 的 page 值 http://www.example.com/index.php?page=foo *}
{$smarty.get.page}
{* 显示来自表单 ($_POST['page']) 的变量 "page" *}
{$smarty.post.page}
{* 显示 cookie "username" 的值 ($_COOKIE['username']) *}
{$smarty.cookies.username}
{* 显示服务器变量 "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
{$smarty.server.SERVER_NAME}
{* 显示系统环境变量 "PATH" *}
{$smarty.env.PATH}
{* 显示 PHP 会话变量 "id" ($_SESSION['id']) *}
{$smarty.session.id}
{* 显示来自合并的 get/post/cookies/server/env 的变量 "username" *}
{$smarty.request.username}
注意
由于历史原因,
{$SCRIPT_NAME}是{$smarty.server.SCRIPT_NAME}的简写。<a href="{$SCRIPT_NAME}?page=smarty">点击我</a> <a href="{$smarty.server.SCRIPT_NAME}?page=smarty">点击我</a>注意
尽管 Smarty 提供了直接访问 PHP 超全局变量的便利性,但应谨慎使用。直接访问超全局变量会将底层应用程序代码结构与模板混合在一起。一个好的做法是将特定需要的值分配给模板变量。
{$smarty.now}
可以通过 {$smarty.now} 访问当前的时间戳。该值反映了自 1970 年 1 月 1 日(被称为 Epoch)以来经过的秒数,并可以直接传递给 date_format 修饰符进行显示。请注意,time() 在每次调用时都会被调用;例如,一个执行时间为三秒的脚本,在开始和结束时调用 $smarty.now 将显示三秒的差异。
{* 使用 date_format 修饰符显示当前日期和时间 *}
{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
{$smarty.const}
您可以直接访问 PHP 常量的值。另请参见 Smarty 常量。
<?php
// 在 PHP 中定义的常量
define('MY_CONST_VAL','CHERRIES');
在模板中输出常量:
{$smarty.const.MY_CONST_VAL}
注意
尽管 Smarty 提供了直接访问 PHP 常量的便利性,但通常要避免使用,因为这会将底层应用程序代码结构混合到模板中。一个好的做法是将特定需要的值分配给模板变量。
{$smarty.capture}
通过内置的 {capture}..{/capture} 函数捕获的模板输出可以使用 {$smarty.capture} 变量访问。有关更多信息,请参见 {capture} 页面。
{$smarty.config}
{$smarty.config} 变量可用于引用加载的配置变量。{$smarty.config.foo} 是 {#foo#} 的同义词。有关更多信息,请参见 {config_load} 页面。
{$smarty.section}
{$smarty.section} 变量可用于引用 {section} 循环的属性。其中包含一些非常有用的值,例如 .first、.index 等。
注意
{$smarty.foreach}变量不再与新的{foreach}语法一起使用,但仍然支持 Smarty 2.x 风格的 foreach 语法。
{$smarty.template}
返回正在处理的当前模板的名称(不包含目录)。
{$smarty.template_object}
返回正在处理的当前模板的模板对象。
{$smarty.current_dir}
如果模板是从文件系统(默认)加载的,则返回正在处理的当前模板的目录名称。
{$smarty.version}
返回模板编译所使用的 Smarty 版本。
<div id="footer">Powered by Smarty {$smarty.version}</div>
{$smarty.block.child}
返回子模板中的块文本。参见 模板继承。
{$smarty.block.parent}
返回父模板中的块文本。参见 模板继承。
{$smarty.ldelim}, {$smarty.rdelim}
这些变量用于直接打印左分隔符和右分隔符的值,与 {ldelim},{rdelim} 相同。