thinkphp_3.1.2中的MVC模式
①MVC:
M(Model) 模型 (负责数据的操作,编写model类)
V(View) 视图(模板) (负责前台页面展示,编写.html文件)
C(Controller)控制器(模块) (描述功能,编写类文件)②MVC分别所对应的目录
M: 项目目录/应用目录/lib/Model
V: 项目目录/应用目录/Tpl
C: 项目目录/应用目录/lib/Action③通过url来访问C模块(其实是类文件中的方法)
④通过url访问C模块的四种方式
<1> PATHINFO模式 (推荐使用)
http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2
默认:http://localhost/thinkphp/index.php/Index/index
<2> 普通模式
http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2<3> REREAD模式
去掉入口文件<4> 兼容模式
http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2thinkphp_3.1.2输出
在thinkphp_3.1.2框架中,输出到界面不是靠单个
.php
文件或单个.html
文件来展示。它是通过模块中的方法(C),进行数据操作(M),再调用模板中的.html
文件(V)渲染到前台。① 通过echo等原生PHP输出方式
② 通过assgin()分配变量和display()方式输出(调用模板)
③ 在项目文件下的Conf
中config.php
修改模板的左右定界符(默认是“{}”但容易混淆,修改成“<{}>”)
config.php
<?php
return array(
//修改左定界符
'TMPL_L_DELIM' => '<{',
//修改右定界符
'TMPL_R_DELIM' => '}>',
);
?>
thinkphp_3.1.2中的数据库增删查改(CURD)
①TP_3.1.2读取数据
<1>selec() //获取所有数据,以数组形式返回
<2>find() //获取单条数据
<3>getField('字段名') //获取一个具体的字段对应的值
②TP_3.1.2创建数据
->字段名 = 值
再 -> add()方法
③TP_3.1.2删除数据
delete(id) 或 配合连贯操作where()方法来删除
④TP_3.1.2更新数据
save($arr) 其中$arr是表中字段对应的值
⑤编写配置文件
config.php
<?php
return array(
/*
1.传统方式
//配置哪种数据库
'DB_TYPE' => 'mysql',
//配置主机
'DB_HOST' => 'localhost',
//配置数据库名称
'DB_NAME' => 'thinkphp',
//配置用户
'DB_USER' => 'root',
//配置密码
'DB_PWD' => '',
//配置端口号
'DB_PORT' => '3306',
*/
//配置数据库表前缀
'DB_PREFIX' => 'tp_',
//2.DSN 方式:使用DSN来简化配置数据库信息(以DSN优先)
'DB_DSN' => 'mysql://root:@localhost:3306/thinkphp',
);
?>
例子:
<1>.在数据库thinkphp中建一个user表,字段有id,username,sex.
<2>.因为这是一个用户功能模块,所以要在Home文件下/lib文件下/Action目录下/创建一个controller用户模块
UserAction.class.php
格式必须是xxxAction.class.php
<3>在此模块下编写需要的方法
class UserAction extends Action{
//基础默认方法index()
public function index(){
$m = M('User') #或者 $m = new Model('User');
$arr = $m->select();
$this->assign('data',$arr);
$this->display();
}
/*
此时需要在Home目录下/Tpl目录下/建对应的模块名文件夹(如User)下/建与方法名同名的模板文件index.html
*/
#删除操作
public function del(){
$m = M('User');
$id = $_GET['id'];
#可以直接指定删除哪条记录,具有返回值且为影响行数
$count = $m->delete($id);
if($count>0){
$this->success('删除数据成功');
}else{
$this->error('删除数据失败');
}
}
/*
这里在模板index.html文件中
<a href='__URL__/del/id/<{$vo.id}>'>删除</a>GET方式来传入id删除指定数据
*/
#通过modify()方法来显示修改界面
public function modify(){
$id = $_GET['id'];
$m = M('User');
$arr = $m->find($id);
$this->assign('data',$arr);
$this->display();
}
/*
1.这里需要在Home目录下/Tpl目录下/对应的模块名文件夹(如User)下/建与方法名同名的模板文件modify.html
2.再<form action="__URL__/update" method='post'>通过表单提交到update方法,前面也说过在thinkphp中没有单独的.php文件来承载某些功能,它使用模块中方法来实现
*/
#通过update()方法来实现数据库的更新
public function update(){
$m = M('User');
$data['id'] = $_POST['id'];
$data['username'] = $_POST['username'];
$data['sex'] = $_POST['sex'];
$count = $m->save($data);
if($count>0){
$this->success('数据修改成功','index');
}else{
$this->error('修改失败');
}
}
#通过add()方法来显示添加页面模板(同理要在Home目录下/Tpl目录下/对应的模块名文件夹(如User)下/建与方法名同名的模板文件add.html)
public function add(){
$this->display();
}
/*
其中add.html内容
<form action="/thinkphp/index.php/User/create" method='post'>
姓名:<input type='text' name='username' /><br/>
性别:男<input type='radio' name='sex' value='1' /> 女<input type='radio' name='sex' value='0' /><br/>
<input type='submit' value='确定添加' name='doSubmit' />
</form>
*/
这里通过post方式把表单数据提交到create()方法下
#增加数据
public function create(){
$m = M('User');
$m->username = $_POST['username'];
$m->sex = $_POST['sex'];
$count = $m->add();
if($count>0){
$this->success('添加成功','index');
}else{
$this->error('添加失败');
}
}
}
需要改变下观点:就是在thinkphp_3.1.2中不存在单个.php文件,它都是通过访问Controller模块中的方法,进行数据操作,通过模板渲染到前台。特别需要注意的是:在哪个模块下使用哪个方法,那么模板文件应该在Tpl文件夹中建对应的模块名文件夹,再在此文件下创建响应方法名的.html模板文件