1. 在配置文件Application\Common\Conf\config.php中,进行数据库配置,模块,布局,其他配置
其中,其他配置中有
'URL_MODEL' => 2, //URL模式:Rewrite
'TOKEN_ON' => true, //开启表单令牌
第一行是将ThinkPHP的URL模式配置为Rewrite模式,Rewrite是一种URL重写模式,通常用于将网站伪静态化以提高SEO效果,还可以使URL变得简洁。需要注意的是,该模式需要Apache开启rewrite模块。编辑httpd.conf,取消如下配置的注释即可:
LoadModule rewrite_module modules/mod_rewrite.so
表单令牌是ThinkPHP中的表单安全防护机制,它可以防止表单被恶意提交,增强网站的安全性。在开启表单令牌后,还需要行为绑定。创建文件Application\Common\Conf\tags.php,具体代码如下:
<?php
return array(
//表单令牌行为绑定
'view_filter' => array('Behavior\TokenBuildBehavior'),
);
?>
当表单令牌开启时,ThinkPHP会自动为项目中的表单添加一个name为“_hash_”的隐藏域保存令牌,当调用模型的create()方法时会自动验证令牌是否正确。
2.谈MVC框架
(1)C——控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型去处理请求,然后再确定用哪个视图来显示返回的数据。
(2)M——模型
模型表示数据和业务规则。在MVC的3个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
(3)V——视图
视图是用户看到并与之交互的界面,模型获取的数据最终通过视图展现给用户。
3.ThinkPHP基本使用
(1)assign()
ThinkPHP框架默认开启了模板引擎,在开启模板引擎的情况下,变量都需要使用assign()方法将变量分配给视图文件。示例代码如下:
$this->assign('name',$name);
从上述代码可知,assign()方法的第1个参数表示数据在视图中的名称,第2个参数表示要传递的数据。由于ThinkPHP框架采用面向对象编程,因此还可以使用为对象属性赋值的方式,示例代码如下:
$this->name=$name;
需要注意的是,assign()方法必须在display()方法前调用,分配的变量数据才能显示到视图中。
(2)display()
ThinkPHP使用display()方法来显示视图,display()方法有3种形式,如下表:
用法 | 示例 | 描述 |
不带任何参数 | $this->display() | 系统会自动定位当前操作的模板文件 |
[模块@][控制器:][操作] | $this->display("Admin@Index:index") | 表示会输出Admin模块下的View目录下的Index目录下的index.html文件 |
完整的模板文件名 | $this->display("./Temp/Public/index.html") | 表示输出项目根目录下的Temp目录下的Public目录下的index.html文件,注意使用这种方式一定要加上视图文件后缀 |
在使用assign()方法为视图变量赋值后,就可以在视图文件中输出变量了。输出变量可以使用PHP原生语法,例如:
<?php
echo $name;
?>
也可以使用标签语法输出变量,因为ThinkPHP默认情况下提供了类似Smarty的模板引擎技术ThinkTemplate,该模板引擎输出变量的语法如下:
{$name}
ThinkTemplate模板标签默认的开始标记是"{",结束标记是"}"。当然也可以通过配置文件对其进行修改,例如:
'TMPL_L_DELIM'=>'<{',
'TMPL_R_DELIM'=>'}>',
此时变量输出标签就变成了:
<{$name}>