ThinkPHP 模板

模板概述

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
    ThinkPHP 模板
    ThinkPHP 模板输出 display 方法
    ThinkPHP 模板变量输出
    ThinkPHP 模板包含 include 关键字
    ThinkPHP 模板导入 import 和 load 关键字
    ThinkPHP 模板特殊字符串替换

zgguan.com(it学习网) — 提供最好的 XHTML教程DIV+CSS教程JavaScript教程PHP教程ThinkPHP教程