最近在学习Thinkphp,做一个小结:
首先是目录的结构,我采用的版本是3.2,相对于3.1来说,目录结构有了些变化,看3.1教程的虽然也可以,但是其中的变化需要先了解一下。
项目名称(根目录)为thinkphp,访问时以index.php为入口文件,在其中指定
define('APP_NAME','HOME');
define('APP_PATH','./HOME/');
将Thinkphp的基础包也添加在这个目录之中,与HOME同级。
在HOME文件夹中,产生:
Common:暂时不用
Home:主要目录
Runtime:缓存(出现问题时可以删除)
访问 http://localhost/thinkphp/ 会自动调用Home/Controller/indexController.calss.php。
所以在访问时http://localhost/thinkphp/ =http://localhost/thinkphp/index.php=http://localhost/thinkphp/index.php/HOME=http://localhost/thinkphp/index.php/HOME/Index=http://localhost/thinkphp/index.php/IHOME/ndex/index
在3.1版本中可以去掉HOME,3.2中必须指定。
搞清楚了基本结构和访问方式,开始进行CURD的简单操作。
首先访问时要在网页产生信息表的罗列,显示出数据库中的数据,这里以User表为例,我们想要的访问方式是http://localhost/thinkphp/index.php/HOME/User
所以我们缺少了一个User的控制器,在Controller文件夹中新建UserController.class.php(3.1版本中为UserAction.class.php)
首先进行显示:
public function index(){
$m=M('User');
$arr=$m->select();
//var_dump($arr);
$this->assign('data',$arr);
$this->display();
}
$this->display()调用了User所对应的View,在View文件夹中有同名的View文件index.html(与方法名同名)
显示界面的主要代码:
<table border="1" width="500" align="center">
<tr>
<th>id</th>
<th>username</th>
<th>usermail</th>
<th>操作</th>
</tr>
<volist name='data' id='vo'>
<tr>
<td>{$vo.id}</td>
<td>{$vo.username}</td>
<td>{$vo.sex}</td>
<td><a href="/thinkphp/index.php/HOME/User/del/id/{$vo.id}">删除</a>|<a href="/thinkphp/index.php/HOME/User/modify/id/{$vo.id}">修改</a></td>
</tr>
</volist>
</table>
将id传递进行删除和修改操作,data是在index方法中传递的数据,使用volist便利进行输出
删除操作调用UserController中的del模块,主要代码如下:
public function del(){
$m=M('User');
$id=$_GET['id'];
$count=$m->delete($id);
if ($count>0) {
$this->success('数据删除成功');
}
else{
$this->error("数据删除失败");
}
}
这里删除功能完成。
修改功能:
修改显示控制:
public function modify(){
$m=M("User");
$id=$_GET['id'];
$arr=$m->find($id);
$this->assign('data',$arr);
$this->display();//负责显示修改页面
}
修改界面:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
window.οnlοad=function(){
if ("{$data.sex}"==0){
document.getElementsByName('sex')[1].checked="checked";
}
else{
document.getElementsByName('sex')[0].checked="checked";
}
}
</script>
</head>
<body>
<form action="/thinkphp/index.php/HOME/User/update" method="post">
<input type="hidden" name="id" value="{$data.id}">
姓名:<input type="text" name="username" value="{$data.username}" /><br>
性别:<input type="radio" name='sex' value='1'/>男<input type="radio" name='sex' value='0'/>女<br>
<input type="submit" value="提交修改">
</form>
</body>
</html>
调用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('数据修改失败');
}
}
添加功能:
在信息显示页面添加按钮:
<center>
<button οnclick=jump()>添加数据</button>
</center>
jump方法:
<script type="text/javascript">
function jump(){
window.location="/thinkphp/index.php/HOME/User/add";
}
</script>
add方法:
只负责显示add所对应的模板。
add.html:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="__URL__/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="添加数据">
</form>
</body>
</html>
方法主体:
public function create(){
$m=M('User');
$m->id=$_POST['id'];
$m->username=$_POST['username'];
$m->sex=$_POST['sex'];
$idnum=$m->add();
if($idnum>0){
$this->success('添加成功','index');
}
else{
$this->error('数据添加失败');
}
}
到此完成。