{$smarty} 保留变量

可以通过PHP的保留变量 {$smarty}来访问一些环境变量。 下面是这些变量的列表:

页面请求变量

页面请求变量 $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV$_SESSION 可以通过下面的方式来使用:


Example 4.8. 显示页面请求变量

  1. {* display value of page from URL ($_GET) http://www.example.com/index.php?page=foo *}
  2. {$smarty.get.page}
  3.  
  4. {* display the variable "page" from a form ($_POST['page']) *}
  5. {$smarty.post.page}
  6.  
  7. {* display the value of the cookie "username" ($_COOKIE['username']) *}
  8. {$smarty.cookies.username}
  9.  
  10. {* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
  11. {$smarty.server.SERVER_NAME}
  12.  
  13. {* display the system environment variable "PATH" *}
  14. {$smarty.env.PATH}
  15.  
  16. {* display the php session variable "id" ($_SESSION['id']) *}
  17. {$smarty.session.id}
  18.  
  19. {* display the variable "username" from merged get/post/cookies/server/env *}
  20. {$smarty.request.username}
  21.  

Note

由于历史愿意,{$SCRIPT_NAME}变量会作为 {$smarty.server.SCRIPT_NAME}的缩写。

  1. <a href="{$SCRIPT_NAME}?page=smarty">click me</a>
  2. <a href="{$smarty.server.SCRIPT_NAME}?page=smarty">click me</a>
  3.  

Note

虽然Smarty提供了较方便直接访问PHP超全局变量的方法,但必须谨慎使用。 直接访问超全局变量会弄乱应用程序底层代码和模板语法。 最佳的实践是从PHP将需要的变量对模板进行赋值再使用。

{$smarty.now}

当前的时间戳 可以通过{$smarty.now}来获取。 时间戳是从1970年1月1日开始计算到当前的秒数。 当前时间戳可以被date_format 修饰器使用并显示。 注意:在每次使用该变量时都会调用time()函数。 比如说一个程序花了三秒来执行,在开头和结束时都调用了$smarty.now,那么这两个数值将差三秒。

  1. {* use the date_format modifier to show current date and time *}
  2. {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
  3.  

{$smarty.const}

直接访问PHP的常量。参见 smarty 常量.

  1. <?php
  2. // the constant defined in php
  3. define('MY_CONST_VAL','CHERRIES');
  4. ?>
  5.  

在模板中显示常量

  1. {$smarty.const.MY_CONST_VAL}
  2.  

Note

虽然Smarty有较方便直接访问PHP常量的方法。但这通常会弄乱应用程序底层代码和模板语法。最佳的实践是从PHP将需要的变量对模板进行赋值再使用。

{$smarty.capture}

Smarty内置函数 {capture}..{/capture}可以捕获其中的代码输出。 通过{$smarty.capture}变量可以使用这些输出的代码。 参见 {capture}函数。

{$smarty.config}

{$smarty.config}变量可以获取 配置变量{$smarty.config.foo}可获取设置变量的 {#foo#}。参见 {config_load}

{$smarty.section}

{$smarty.section}变量是{section} 循环中的属性。 它提供了一些很有用的值,如 .first, .index等等。

Note

{$smarty.foreach}变量在新的{foreach} 语法中已经不再使用。但仍然支持Smarty 2.x 风格的 foreach 语法。

{$smarty.template}

返回当前的模板名称(不带目录名)。

{$smarty.template_object}

返回当前模板对象。

{$smarty.current_dir}

返回当前模板的目录名称。

{$smarty.version}

返回编译当前模板的Smarty版本。

  1. <div id="footer">由 Smarty {$smarty.version} 引擎驱动</div>
  2.  

{$smarty.block.child}

返回子模板提供的区块代码。 参见模板继承

{$smarty.block.parent}

返回父模板提供的区块代码。 参见模板继承

{$smarty.ldelim}, {$smarty.rdelim}

用于显示左定界符和右定界符。等同于 {ldelim},{rdelim}

参见 赋值变量配置变量

原文: https://www.smarty.net/docs/zh_CN/language.variables.smarty.tpl