新课:PHP零基础(CMS开发)教学!
立即报名PHP工具箱的下载与启动
04分钟13秒官网下载ThinkPHPH5框架源码的方法
03分钟47秒Git下载ThinPHP5框架源码的方法
09分钟05秒模板下载与项目创建:推荐使用PHP工具箱
07分钟05秒模板导入与资源文件路径替换:从首页开始
06分钟37秒模板分离与公共文件的导入:为模板继承做好准备
07分钟55秒模板继承与区块设计:父模板与子模板创建规则[重点]
08分钟32秒使用标签简化项目外部资源的引入:统一导入提高效率
03分钟45秒登陆模板的导入与渲染:关注模板导入流程
03分钟39秒创建管理员用户数据表
03分钟18秒Ajax数据提交与验证码处理:用户体验至上
07分钟58秒管理员登陆与验证:验证规则与查询结果返回
16分钟11秒注销登陆:用session来实现
05分钟10秒如何检测登陆状态和防止重复登陆:用公共控制器实现
06分钟17秒管理员管理功能简介:推荐先看一下
08分钟21秒完善管理员数据表设计:添加新字段适应业务需求
03分钟15秒实现首页模板:系统变量与请求变量的获取方式
09分钟16秒管理员列表与基本功能实现:前端到后端,权限控制与CURD实现
18分钟46秒管理员添加编辑与软删除的实现:Ajax验证与数据恢复
14分钟17秒班级管理中的数据表与模型设计:关联查询原理
07分钟29秒班级列表展示与状态修改:模型查询
09分钟27秒班级信息编辑功能的实现:模板渲染与逻辑处理
04分钟05秒班级添加功能的实现:模板渲染与逻辑处理
05分钟52秒班级信息的软删除与恢复功能:世上也有后悔药
06分钟24秒教师数据表模型设计与模板渲染
05分钟43秒用户密码自动修改的Bug修复:编辑时密码未做修改时会出现
02分钟47秒教师管理中的编辑添加与软删除功能:CURD操作
08分钟55秒学-生-数-据表与模型设计:与班级表关联
03分钟10秒学生信息的分页显示技术:非常实用
05分钟53秒学生-数-据的增删改查操作:CURD总结
04分钟29秒课程总结:编程的心得体会分享
02分钟18秒天蓬老师6年前
真是众口难调,有的还认为讲的简单了,有的认为跨度过大,理解起来有难度。 既然都学到了框架开发了,相信PHP原生开发经验应该有一些了。并且,如果想用TP5框架开发,至少要把官方手册看一遍吧,如果不想看手册,至少把本站的ThinkPHP5基础教学视频看一下吧,也是我录的。完了,你再看这个教程,会觉得很流畅的,应该不会觉得太突兀。
塞班。via3年前
大家可以把 edituser 方法 改成这样的 虽然我不会定义success 的弹窗提示 但是我这个方法修改数据 没问题,就是会提示个undefined public function update() { try { // 接收数据,获取要更新的关键字信息 $id = Request::instance()->
phpcn_u316433年前
管理员添加,点击提价无反应。打开开发者模式,提示接受数据多了一个参数,其实就是url地址。这是apache的原因导致的,可以通过修改.htaccess文件解决。将正常的该文件中的 RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] 注释掉,添加 RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
马维军4年前
修改管理员的页面,角色、是否启动,两个没有加读取代码,且此字段只能从0修改成1,不能从1修改到0。不知道这是个设计上的缺陷还是Think官方为了什么考虑的,我查了下从3.0就有人遇到这个这个。 解决办法: $condition = ['id'=>$data['id']] ; $status='0'; $role='0'; $da
马维军4年前
return ['status'=>$status, 'message'=>$message]; 一直无法返回数组,Peter-Zhu老师您用的是哪个版本的ThinkPHP 不用json直接return就可以返回数组。
xya4年前
管理员添加编辑与软删除 添加数据的模版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