浅析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是指这个数据在模板输出时所使用的名称 |