xya
Follow

After following, you can keep track of his dynamic information in a timely manner

Course notes
  • Courses in the relevant section:Implementation of administrator added editing and soft deletion: Ajax verification and data recovery

    管理员添加编辑与软删除 添加数据的模版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字段一致。

    2019-05-090个赞