浅析ThinkPHP的模板输出功能 |
|
本文标签:ThinkPHP,模板输出 ThinkPHP中的每一个xxxAction.class.php文件就代表着一个应用模块,这个Action中的每一个方法(function)代表着一个操作,操作可以分为有输出到模板的操作和只具执行不需要输出的操作 。
class IndexAction extends Action{
public function index(){
}
}
对此,需要指出一下几点: 1.在ThinkPHP的开发中,要增加一个应用模块,就要在Action文件夹里建立一个类,类的文件命名格式是“模块名称+Action.class.php” 。例如我们这里的应用模块是Index,所以定义文件名为IndexAction.class.php 。 通常一个应用模块中,会有若干操作(function)需要有与用户交互的页面,这就需要用到模板输出,ThinkPHP本身已内置了一套具有ThinkPHP特色的,很强大易扩展但应用非常方便兼简单的模板引擎 。
<?php
class IndexAction extends Action{
public function index(){
$value = hello,ThinkPHP;
$this->assign(name,$value);
$this->display();
}
}
?>
(摘自手册:ThinkPHP模板指南,此后的知识要点均来自ThinkPHP官方手册,不再申明) $this->assign(name,$value); // 下面的写法是等效的 $this->name = $value ; // 模板变量赋值后就需要调用模板文件来输出相关的变量,模板调用通过display方法来实现 $this->display();
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>{$name}</title>
</head>
<body>
测试输出: {$name}
</body>
</html>
此处注意:模板变量使用{$变量名称}这种标签进行输出 。 不同的模板变量类型,使用不同的标签,标签可以自行另外定义,暂且不理会 。 附加补充知识: 1 如果要同时输出多个模板变量,可以使用下面的方式: $array = array(); $array[name] = thinkphp; $array[email] = 123456@vip.qq.com; $array[phone] = 123456; $this->assign($array); 这样,就可以在模板文件中同时输出name、email和phone三个变量 。 2 我们使用上面的变量定义,将整个数组定义为一个模板变量来输出 $array = array(); $array[name] = thinkphp; $array[email] = 123456@vip.qq.com; $array[phone] = 123456; $this->assign(array,$array); $this->display(); 在html中,要输出$array[name]的值,代码是 3 将这个数组循环输出 (1) IndexAction.class.php中代码更改如下
<?php
class IndexAction extends Action{
public function index(){
$array = array();
$array[name] = thinkphp;
$array[email] = 123456@vip.qq.com;
$array[phone] = 123456;
$value = hello,ThinkPHP;
$this->assign(array,$array);
$this->assign(name,$value);
$this->display();
}
}
?>
(2) 将Myapp/Tpl/default/Index/index.html代码更改如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>{$name}</title>
</head>
<body>
<iterate name="array" id="vo">
{$vo}<br />
</iterate>
</body>
</html>
注意:name=array是指要循环的模板变量是array,id=vo是指这个数据在模板输出时所使用的名称 |