可以通过PHP的保留变量
{$smarty}
来访问一些环境变量。
下面是这些变量的列表:
页面请求变量
如$_GET
, $_POST
,
$_COOKIE
, $_SERVER
,
$_ENV
和 $_SESSION
可以通过下面的方式来使用:
Example 4.8. 显示页面请求变量
{* display value of page from URL ($_GET) http://www.example.com/index.php?page=foo *} {$smarty.get.page} {* display the variable "page" from a form ($_POST['page']) *} {$smarty.post.page} {* display the value of the cookie "username" ($_COOKIE['username']) *} {$smarty.cookies.username} {* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*} {$smarty.server.SERVER_NAME} {* display the system environment variable "PATH" *} {$smarty.env.PATH} {* display the php session variable "id" ($_SESSION['id']) *} {$smarty.session.id} {* display the variable "username" from merged get/post/cookies/server/env *} {$smarty.request.username}
由于历史愿意,{$SCRIPT_NAME}
变量会作为
{$smarty.server.SCRIPT_NAME}
的缩写。
<a href="{$SCRIPT_NAME}?page=smarty">click me</a> <a href="{$smarty.server.SCRIPT_NAME}?page=smarty">click me</a>
虽然Smarty提供了较方便直接访问PHP超全局变量的方法,但必须谨慎使用。 直接访问超全局变量会弄乱应用程序底层代码和模板语法。 最佳的实践是从PHP将需要的变量对模板进行赋值再使用。
当前的时间戳
可以通过{$smarty.now}
来获取。
时间戳是从1970年1月1日开始计算到当前的秒数。
当前时间戳可以被date_format
修饰器使用并显示。
注意:在每次使用该变量时都会调用time()
函数。
比如说一个程序花了三秒来执行,在开头和结束时都调用了$smarty.now
,那么这两个数值将差三秒。
{* use the date_format modifier to show current date and time *} {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
直接访问PHP的常量。参见 smarty 常量.
<?php // the constant defined in php define('MY_CONST_VAL','CHERRIES'); ?>
在模板中显示常量
{$smarty.const.MY_CONST_VAL}
虽然Smarty有较方便直接访问PHP常量的方法。 但这通常会弄乱应用程序底层代码和模板语法。 最佳的实践是从PHP将需要的变量对模板进行赋值再使用。
Smarty内置函数
{capture}..{/capture}
可以捕获其中的代码输出。
通过{$smarty.capture}
变量可以使用这些输出的代码。
参见
{capture}
函数。
{$smarty.config}
变量可以获取
配置变量。
{$smarty.config.foo}
可获取设置变量的
{#foo#}
。参见
{config_load}。
{$smarty.section}
变量是{section}
循环中的属性。
它提供了一些很有用的值,如
.first
, .index
等等。
{$smarty.foreach}
变量在新的{foreach}
语法中已经不再使用。
但仍然支持Smarty 2.x 风格的 foreach 语法。
返回子模板提供的区块代码。 参见模板继承。
返回父模板提供的区块代码。 参见模板继承。