模板概述
PHP 中模板设计的初衷是将代码和页面分离出来分别处理,即显示与逻辑分离。使用模板可以让代码脉络更加清晰,结构更加合理化。当我们要将一些数据展示给用户浏览器的时候,就需要用到模板。
采用了模板机制后比 PHP 与 HTML 代码混写在执行效率上会有一定的损失。
ThinkPHP 内置了一套具有TP特色的,很强大易扩展且应用非常方便兼简单的模板引擎。
ThinkPHP 模板默认存放于 Tpl 目录,其定义规则为:
模板目录/模板主题/[分组名/]模块名/操作名+模板后缀
模板主题功能是为了多模板切换而设计的,默认主题为 default 。模板文件的默认后缀的情况是 .html 。
在前面的例子中,如Index模块的index操作,那么对应的模板就是:
Tpl/default/Index/index.html
模板赋值与输出
模块中的操作(方法)分为模板输出和不输出模板两类,而一个输出模板的操作对应一个模板。
在操作中使用 assign 方法对模板变量赋值,以便于在模板中输出该变量从而展示给用户。
模板变量赋值格式如下:
$this->assign('name',$value); //或者下面的写法: $this->name = $value;
$value 可以是单一变量或者数组甚至对象等 PHP 语法支持输出的变量。
在操作中使用 display 方法来实现模板向浏览器的输出,格式如下:
$this->display();
模板赋值输出例子
打开 Lib/Action/Index/IndexAction.class.php 文件,编辑 index 操作:
<?php class IndexAction extends Action{ public function index(){ $username = "admin"; // 数组 $otherinfo = array(); $otherinfo['email'] = 'admin@5idev.com'; $otherinfo['regdate'] = '1281030876'; // 模板变量赋值 $this->assign( "username", $username ); $this->assign( "otherinfo", $otherinfo ); //输出模板 $this->display(); } } ?>
ThinkPHP 中还允许输出跨模块和操作输出模板,也允许输出不同主题的模板,详细内容参见本节内容《ThinkPHP 模板输出 display 方法》部分。
创建模板
打开 Tpldefault 文件夹,根据命名规则,创建一个名为 Index 的文件夹。进入 Index 文件夹,创建一个名为 index.html 的文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{$Think.config.101_SITENAME}</title> </head> <body> <p>用 户 名:{$username}</p> <p>电子邮件:{$userinfo["email"]}</p> <p>注册时间:{$userinfo["regdate"]|date="Y-m-d H:i",###}</p> </body> </html>
模板变量输出
上面已经将操作中的变量赋值给了模板,并且创建输出了模板,最后一步就是将模板变量输出展示给用户。
模板变量输出格式如下:
{$变量名称}
如上面的模板例子所示,该例子输出了一个普通变量和一个数组变量。更多关于模板变量输出,参见本节内容《ThinkPHP 模板变量输出》部分。
在浏览器访问该操作:
http://127.0.0.1/html/myapp/index.php/Index/index
浏览器显示如下:
用 户 名:admin 电子邮件:xxxx@xxx.com 注册时间:2010-08-06 01:54