1.C层:编辑页面、更新数据、删除数据
<?php
namespace app\index\controller;
use app\common\model\Student;
use app\common\model\Klass;
use think\Request;
class StudentController extends IndexController
{
public function index(){
// $Student=new Student;
$students=Student::paginate();
$this->assign('students',$students);
return $this->fetch();
}
//编辑页面
public function edit(){
//1.获取学生id
$id=Request::instance()->param('id/d');
// echo $id;
//2.查询学生对象
if(is_null($Student=Student::get($id))){
return $this->error('要编辑的学生不存在,请核对后再试id为'.$id);
}
//3.取出所有班级
$Klasses=Klass::all();
$this->assign('Klasses',$Klasses);
//4.把对象注册给edit页面
$this->assign('Student',$Student);
//5.返回html
return $this->fetch();
}
//更新数据
public function update(){
//1.获取编辑页面post过来的id
$id=Request::instance()->post('id/d');
// 2.根据id查询对应的学生对象,为空则报错
if(is_null($Student=Student::get($id))){
return $this->error('要更新的学生不存在');
}
// 3.把post数据暂存到对应对象里
$Student->name=Request::instance()->post('name');
$Student->klass_id=Request::instance()->post('klass_id');
// 4.验证没问题则保存到数据库
if(!$Student->validate(true)->save()){
return $this->error('数据更新失败'.$Student->getError());
}else{
return $this->success('更新成功',url('index'));
}
}
//删除数据
public function delete(){
// 1.获取页面传来的学生id,如果不存在报错:为空为0都是不存在
$id=Request::instance()->param('id/d');
if(is_null($id)||$id===0){
return $this->error('未传学生id');
}
// 2.根据id查询对应的学生对象,为空则报错
if(!$student=Student::get($id)){
return $this->error('学生不存在');
}
// 3.删除学生对象:失败则报错,成功返回信息
if(!$student->delete()){
return $this->error('删除出错:'.$student->getError());
}
return $this->success('成功删除',url('index'));
}
}
2.V层
<!DOCTYPE html>
<html>
<head>
<title>编辑学生</title>
</head>
<body>
<form action="{:url('update')}" method='post'>
<input name="id" type="hidden" value="{$Student->getData('id')}">
<label>姓名:</label><input name="name" value="{$Student->getData('name')}"><br/>
<label>学号:</label><input name="num" value="{$Student->getData('num')}"><br/>
<label>性别:</label>
<input type="radio" name="sex" value="0" {eq name="{$Student->getData('sex')}" value="0"} checked='checked'{\eq}><label>男</label>
<input type="radio" name="sex" value="1" {eq name="{$Student->getData('sex')}" value="1" }checked='checked'{\eq}><label>女</label><br/>
<label>班级:</label>
<select name="klass_id">
{volist name="Klasses" id="Klass"}
<option value="{$Klass->id}" {eq name="Klass->id" value="$Student->klass_id"}selected="selected"{/eq}>{$Klass->name}</option>
{/volist}
</select><br/>
<label>邮箱:</label>
<input type="email" name="email" value="{$Student->getData('email')}" /><br/>
<button type="submit">保存</button>
</form>
</body>
</html>
3.验证模块
application\common\validate\Student.php
<?php
namespace app\common\validate;
use think\Validate;
/**
*
*/
class Student extends Validate
{
protected $rule=[
'name'=>'require|length:2,5',
'num'=>'require',
];
}