Skip to content

{$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} 相同。

另请参见 分配的变量配置变量