What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
可以通过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 语法。
返回子模板提供的区块代码。 参见模板继承。
返回父模板提供的区块代码。 参见模板继承。