什么是 Smarty?
为什么要使用它?
用例与工作流程
语法比较
模板继承
最佳实践
速成教程
PHP 专用{$smarty}
变量可以用来访问多个环境和请求变量。以下是它们的完整列表。
像$_GET
、$_POST
、$_COOKIE
、$_SERVER
、$_ENV
和$_SESSION
这样的请求变量,可以通过以下示例显示出来
示例 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 超级全局变量,但应谨慎使用。直接访问超级全局变量会将底层应用程序的代码结构与模板混合到一起。一个好习惯是将特定所需值分配给模板变量。
可以使用{$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 常量直接访问,但一般不推荐使用,因为这样做会将底层应用程序代码结构混入模板中。一种好习惯是将指定的必需值指定给模板变量。
可以通过内置的 {capture}..{/capture}
函数捕获的模板输出使用 {$smarty.capture}
变量来访问。有关更多信息,请参见 {capture}
页面。
{$smarty.config}
变量可用来引用已加载的 config 变量。 {$smarty.config.foo}
是 {#foo#}
的同义词。有关更多信息,请参见 {config_load} 页面。
{$smarty.section}
变量可用来引用 {section}
循环属性。这些属性具有某些非常有用的值,如 .first
、.index
等。
使用新的 {foreach}
语法后,不再使用 {$smarty.foreach}
变量,但仍然支持 Smarty 2.x 风格的 foreach 语法。
返回子模板中的块文本。请参见 模板继承。
返回父模板中的块文本。请参见 模板继承。
这些变量用于按字面值输出左分隔符和右分隔符,与 {ldelim},{rdelim}
相同。