thinkphp5项目--个人博客(二)
项目地址
fry404006308/personalBlog: personalBlog
https://github.com/fry404006308/personalBlog
一、删除管理员
1 public function del(){ 2 $id=input('id'); 3 //初始化管理员不能删除 4 // 根据主键删除 5 if($id!=1){ 6 //删除操作 7 $deleted=db('admin')->delete(input('id')); 8 if($deleted){ 9 return $this->success('删除管理员成功!!','lst'); 10 }else{ 11 return $this->error('删除管理员失败!!'); 12 } 13 }else{ 14 return $this->error('初始化管理员不能删除!!'); 15 } 16 }
1 {if condition="$value['id'] neq 1"} 2 <a href="#" onClick="warning('确实要删除吗', '{:url('admin/del',array('id'=>$value['id']))}')" class="btn btn-danger btn-sm shiny"> 3 <i class="fa fa-trash-o">i> 删除 4 a> 5 {/if}
二、修改管理员
控制器中
1 public function edit(){ 2 3 $id=input('id'); 4 $data=db('admin')->find($id); 5 6 //如果是提交过来的数据 7 if(request()->isPost()){ 8 $arr=[ 9 'id'=>input('id'), 10 'username'=>input('username'), 11 //如果接收到密码,并且它不为空,说明我们要修改密码 12 ]; 13 14 if(input('password')){ 15 $arr['password']=md5(input('password')); 16 }else{ 17 //如果为空则表示原来的密码不变 18 $arr['password']=$data['password']; 19 } 20 //验证 21 $validate = Loader::validate('Admin'); 22 if(!$validate->scene('edit')->check($arr)){ 23 $this->error($validate->getError()); die; 24 } 25 // 更新数据表中的数据 26 $edited=db('admin')->update($arr); 27 if($edited){ 28 return $this->success('修改管理员信息成功!!','lst'); 29 }else{ 30 return $this->error('修改管理员信息失败!!'); 31 } 32 return; 33 } 34 $this->assign('data',$data); 35 return $this->fetch(); 36 }
视图中
1 2 <input type="hidden" name="id" value="{$data.id}" > 3
验证器中
1 php 2 namespace app\admin\validate; 3 4 use think\Validate; 5 class Admin extends Validate 6 { 7 protected $rule = [ 8 'username' => 'require|max:25', 9 'password' => 'require|min:32', 10 ]; 11 12 protected $message = [ 13 'username.require' => '名称必须', 14 'username.max' => '名称最多不能超过25个字符', 15 'password.require' => '密码必须', 16 'password.min' => '密码最少32个字符', 17 ]; 18 19 20 protected $scene = [ 21 'add' => ['username'=>'require','password'], 22 'edit' => ['username'=>'require'], 23 ]; 24 }
三、友情链接功能
和对管理员的操作一样,增删改查
也是一个list表,一个add表,一个edit表
包括控制器,模型,验证,视图四个方面,其实直接把管理员的这些操作弄过来改一改就好了
视图:链接列表
1 <body> 2 3 {include file="common/top"} 4 5 6 <div class="main-container container-fluid"> 7 <div class="page-container"> 8 9 10 {include file="common/left"} 11 12 13 14 <div class="page-content"> 15 16 <div class="page-breadcrumbs"> 17 <ul class="breadcrumb"> 18 <li> 19 <a href="{:url('index/index')}">系统a> 20 li> 21 <li class="active">链接管理li> 22 ul> 23 div> 24 25 26 27 <div class="page-body"> 28 29 <button type="button" tooltip="添加链接" class="btn btn-sm btn-azure btn-addon" onClick="javascript:window.location.href = '{:url('links/add')}'"> <i class="fa fa-plus">i> Add 30 button> 31 <div class="row"> 32 <div class="col-lg-12 col-sm-12 col-xs-12"> 33 <div class="widget"> 34 <div class="widget-body"> 35 <div class="flip-scroll"> 36 <table class="table table-bordered table-hover"> 37 <thead class=""> 38 <tr> 39 <th class="text-center" width="10%">IDth> 40 <th class="text-center">链接名称th> 41 <th class="text-center">链接地址th> 42 <th class="text-center">链接描述th> 43 <th class="text-center" width="20%">操作th> 44 tr> 45 thead> 46 <tbody> 47 {volist name="list" id="value"} 48 <tr> 49 <td align="center">{$value.id}td> 50 <td align="center">{$value.title}td> 51 <td align="center"><a href="{$value.url}" target="_blank">{$value.url}a>td> 52 <td align="center"> 53 {if condition="$value['desc'] neq ''"} 54 {$value.desc} 55 {else /} 56 暂无描述 57 {/if} 58 td> 59 <td align="center"> 60 <a href="{:url('links/edit',array('id'=>$value['id']))}" class="btn btn-primary btn-sm shiny"> 61 <i class="fa fa-edit">i> 编辑 62 a> 63 · 64 65 <a href="#" onClick="warning('确实要删除吗', '{:url('links/del',array('id'=>$value['id']))}')" class="btn btn-danger btn-sm shiny"> 66 <i class="fa fa-trash-o">i> 删除 67 a> 68 69 70 td> 71 tr> 72 {/volist} 73 74 tbody> 75 table> 76 <div class="text-right" style="margin-top: 10px"> 77 {$list->render()} 78 div> 79 80 div> 81 <div> 82 div> 83 div> 84 div> 85 div> 86 div> 87 88 div> 89 90 div> 91 92 div> 93 div> 94 95 96 <script src="__PUBLIC__/style/jquery_002.js">script> 97 <script src="__PUBLIC__/style/bootstrap.js">script> 98 <script src="__PUBLIC__/style/jquery.js">script> 99 100 <script src="__PUBLIC__/style/beyond.js">script> 101 102 103 104 body>
控制器
1 php 2 namespace app\admin\controller; 3 4 use think\Controller; 5 use think\Db; 6 use think\Validate; 7 use think\Loader; 8 use app\admin\model\Links as LinksModel; 9 class Links extends controller 10 { 11 public function lst() 12 { 13 // 分页输出列表 每页显示3条数据 14 $list = LinksModel::paginate(3); 15 $this->assign('list',$list); 16 return view('list'); 17 } 18 19 public function add() 20 { 21 //判断是否为post方法提交 22 if(request()->isPost()){ 23 // dump(input('post.')); 24 // 如果提交消息成功,我们就添加消息到数据库 25 26 // // 服务器端对数据进行验证 27 // $validate = new Validate([ 28 // 'username' => 'require|max:25', 29 // 'password' => 'require|min:32' 30 // ]); 31 // 1、接收传递过来的数据 32 33 $data=[ 34 'title'=>input('title'), 35 'url'=>input('url'), 36 'desc'=>input('desc'), 37 ]; 38 39 $validate = Loader::validate('Links'); 40 if(!$validate->scene('add')->check($data)){ 41 $this->error($validate->getError()); die; 42 } 43 44 // if (!$validate->check($data)) { 45 // dump($validate->getError()); 46 // die; 47 // } 48 49 // if添加成功,就指向success页面 50 if(Db::name('links')->insert($data)){ 51 return $this->success('添加链接成功!!','lst'); 52 }else{ 53 return $this->error('添加链接失败!!'); 54 } 55 return; 56 } 57 return view(); 58 } 59 60 public function edit(){ 61 62 $id=input('id'); 63 $data=db('links')->find($id); 64 65 //如果是提交过来的数据 66 if(request()->isPost()){ 67 $arr=[ 68 'id'=>input('id'), 69 'title'=>input('title'), 70 'url'=>input('url'), 71 'desc'=>input('desc'), 72 ]; 73 74 //验证 75 $validate = Loader::validate('Links'); 76 if(!$validate->scene('edit')->check($arr)){ 77 $this->error($validate->getError()); die; 78 } 79 // 更新数据表中的数据 80 $edited=db('links')->update($arr); 81 if($edited){ 82 return $this->success('修改链接信息成功!!','lst'); 83 }else{ 84 return $this->error('修改链接信息失败!!'); 85 } 86 return; 87 } 88 $this->assign('data',$data); 89 return $this->fetch(); 90 } 91 92 public function del(){ 93 $id=input('id'); 94 95 // 根据主键删除 96 97 //删除操作 98 $deleted=db('links')->delete(input('id')); 99 if($deleted){ 100 return $this->success('删除链接成功!!','lst'); 101 }else{ 102 return $this->error('删除链接失败!!'); 103 } 104 105 106 107 } 108 109 }
验证
1 php 2 namespace app\admin\validate; 3 4 use think\Validate; 5 class Links extends Validate 6 { 7 protected $rule = [ 8 'title' => 'require|max:50', 9 'url' => 'require', 10 ]; 11 12 protected $message = [ 13 'title.require' => '链接名称必须填写', 14 'title.max' => '链接名称最多不能超过50个字符', 15 'url.require' => '链接地址必须填写', 16 17 ]; 18 19 20 protected $scene = [ 21 'add' => ['title'=>'require','url'], 22 'edit' => ['title'=>'require','url'], 23 ]; 24 25 26 27 28 29 }
模型
1 php 2 namespace app\admin\model; 3 4 use think\Model; 5 class Links extends Model 6 { 7 8 }
四、栏目功能
验证器里面有一个验证表中字段是否重复的功能
1 php 2 namespace app\admin\validate; 3 4 use think\Validate; 5 class Cate extends Validate 6 { 7 protected $rule = [ 8 'catename' => 'require|max:25|unique:cate', 9 ]; 10 11 protected $message = [ 12 'catename.require' => '栏目名称必须填写', 13 'catename.max' => '栏目名称最多不能超过25个字符', 14 'catename.unique' => '栏目名称已经存在', 15 ]; 16 17 18 protected $scene = [ 19 'add' => ['catename'=>'require|unique:cate'], 20 'edit' => ['catename'=>'require|unique:cate'], 21 ]; 22 23 }
验证当前请求的字段值是否为唯一的,例如:
// 表示验证name字段的值是否在user表(不包含前缀)中唯一
'name' => 'unique:user',