关于ThinkPHP的输出模板
1)思维逻辑:
ThinkPHP有自己的一套输出体系,如果说[LibAction]里所做的是C层控制的话,所对应的V层表示则存放在[Tpldefault]文件夹下,也有其约定俗成的命名规则->
1.每一个Action对应一个文件夹;
2.每个处理方法对应一个html页面。
举个例子来说,有一个名为Test的Action,按照命名规则,它必须建在[LibAction],名为TestAction.class.php。Test这个Action内涵有一个处理方法showpage(),那么要想访问这个函数的话,可以通过http://127.0.0.1/myapp2/test/showpage的形式来访问到。
那么,其对应的HTML文件,首先,必须在[Tpldefault]下面建立一个名为test的文件夹,然后在文件夹内建立名为showpage.html的文件。这样的话,在showpage()方法中的结尾处写入
$this->display();
这个方法的话。就会在浏览器输入http://127.0.0.1/myapp2/test/showpage的时候会被自动跳转到[Tpldefualttestshowpage.html]这里。
TestAction.class.php<=>Tpldefualttest
showpage()<=>showpage.html
2)应用:
有人会问了,就算有这个模板,能拿来干嘛用哦?
这也是我起初的疑问。通过学习,得知ThinkPHP又一过人之处,模板中加入了自定义标签。
通过使用自定义标签,可以更方便地制作V层界面,并且避免代码混淆等问题。很好用,非常好用。接下来通过一个例子来介绍一下其最简单,而且应用最广的一个功能---便利数据集
在TestAction.class.php中建立showpage()方法:
/**
+----------------------------------------------------------
*测试模板输出showpage.html
+----------------------------------------------------------
*/
publicfunctionshowpage()
{
//1.传输单个值,用来在显示层上显示。
$value='hello,ThinkPHP';
$this->assign('name',$value);
//2.传输多个值,用来在显示层上显示。
$array=array();
$array['name']='thinkphp';
$array['email']='liu21st@gmail.com';
$array['phone']='12335678';
$this->assign('array',$array);
//3.访问数据库,获取数据库集合,将其在显示层上显示。
$Demo=newModel('demo');//实例化模型类
$list=$Demo->select();//查询数据
$this->assign('list',$list);//模板变量赋值
$this->display();
}
在tpldefualttest下新建一个名为showpage.html的文件
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
ThisisTheShowPage.
测试输出:{$name}
{$vo}
编号:{$vo2.id}
标题:{$vo2.title}
内容:{$vo2.content}
简单说明一下:
1、可以通过$this->assign('Key值',$变量);的形式向V层传值
2、在V层通过{$Key值}的形式访问非数组变量
3、通过的这种形式来遍历数组
4、和所得的结果是一样的。
4.去除“页面Trace信息”
用模板显示后的页面,在最后都回带着标题为页面Trace信息字样的一组文字信息。在开发的时候能有这个东东真是太好了,不过向客户交付时还继续出现就未免尴尬了。
怎么弄没它,很简单,将Confconfig.php文件中的
'APP_DEBUG'=>true,//开启调试模式
注释掉就哦了。