xya5年前
管理员添加编辑与软删除
添加数据的模版admin_add.html也继承自base父模版。添加的时候,实际上是一个弹层,这个弹层小窗口中显示的网页是没有头部和菜单的。通过block标签中间置空的方式删除继承自父模版的头部和菜单。
提交主要都是使用Ajax方式提交。
检查用户名和邮箱是否重复
在添加数据的模版中,运用Ajax方法检查用户名和邮箱是否重复。
//失去焦点时,运用Ajax方法检查用户名是否重复
$("#name").blur(function(){
$.ajax({type: 'GET', //提交类型
url: "checkUserName", //提交的url地址,使用user控制器下的checkUserName方法进行校验
data:{name:$(this).val()}, //当前需要校验的值,他用对象的方式给出
dataType: 'json', //当前提交的数据类型为json格式
success: function(data){ //当前成功后的回调函数,检测从服务器上返回的数据
if (data.status == 1) { //设置了一个status属性,检测他的值, 若为1,说明校验成功,弹出一个提示信息
alert(data.message);
} else {
alert(data.message);
}
}
});
检查邮箱是否重复与检测用户名重复的方法基本是一样的。运用的是user控制器下的checkUserEmail方法。
用户添加操作
还是运用ajax方法进行用户添加操作。当前数据全部校验完成后,将当前表单中的数据序列化,然后提交到user控制器下的addUser方法进行处理,若处理成功,返回一个提示信息,否则弹出一个失败信息。这里的提示信息也是在控制器中设置的。
控制器下检查用户名和邮箱是否重复的方法
//checkUserName方法,检查用户名是否重复
public function checkUserName(Request $request)
{
$userName = trim($request->param('name')); //通过请求对象的param方法获取到前端传递过来的用户名
$name = ['name'=>$userName];
$status = 1; //设置返回值的初始值status为1
$message = '用户名可用';
$rule = [
'name|用户名' => "require|min:3|max:10",
];
$result = $this -> validate($name, $rule);
if ($result === true) {
//当前模型静态调用get方法进行查询,条件就是当前表单中的name值是否与传递过来的一致
if (UserModel::get(['name' => $userName])) {
//如果在表中查询到该用户名
$status = 0;
$message = '用户名重复,请重新输入!';
}
}else{
$status = 0;
$message = '用户名不可用,请重新输入!';
}
return ['status' => $status, 'message' => $message];
}
//checkUserEmail方法,检查email是否重复
public function checkUserEmail(Request $request)
{
$userEmail = trim($request -> param('email'));
$status = 1;
$message = '邮箱可用';
if (UserModel::get(['email'=> $userEmail])) {
//查询表中找到了该邮箱,修改返回值
$status = 0;
$message = '邮箱重复,请重新输入~~';
}
return ['status'=>$status, 'message'=>$message];
}
管理员提交操作
//addUser方法,添加管理员提交操作
public function addUser(Request $request)
{
$data = $request->param();
$status = 1;
$message = '添加成功';
//设定验证规则
$rule = [
'name|用户名' => "require|min:3|max:10",
'password|密码' => "require|min:3|max:10",
'email|邮箱' => 'require|email'
];
$result = $this -> validate($data, $rule);
//通过验证
if ($result === true) {
$user= UserModel::create($request->param()); //调用模型中的静态方法create进行数据添加
if ($user === null) {
$status = 0;
$message = '添加失败';
}
}else{
$status = 0;
$message = '添加失败';
}
//返回当前的操作状态,操作的提示信息给前端的Ajas调用
return ['status'=>$status, 'message'=>$message];
}
管理员编辑操作
管理员编辑的模版admin_edit.html与添加数据的模版admin_add.html一样,也继承自base父模版。前端部分都几乎一样。重点看后面的Ajas提交部分。
<script>
$(function(){
//检测当前用户是否修改了数据,是,激发change事件,提交按钮可用
$("form").children().change(function(){
$("#submit").removeClass('disabled');
});
$("#submit").on("click", function(event){ //在提交按钮上执行Ajax函数
$.ajax({
type: "POST",
url: "{:url('user/editUser')}", //请求一个url地址进行处理,位于user/editUser
data: $("#form-admin-add").serialize(), //操作的数据是当前表单序列化的值
dataType: "json",
success: function(data){ //处理成功后的回调函数
if (data.status == 1) {
alert(data.message);
layer_close();
} else {
alert(data.message);
}
}
});
})
})
</script>
软删除功能
在自定义模型User.php中,第一步,用use关键字引入当前框架traits\model中的SoftDelete类(这个类在edu\thinkphp\library\traits\model\SoftDelete.php中)这个类定义了一些软删除的方法。第二步,在当前的自定义模型use中,再用use关键字引入软删除的方法集,然后设置$deleteTime属性,属性值设置为delete_time,他会记录当前的记录时间,而且一定要与数据库表中的delete_time字段一致。
0