thinkphp5项目--个人博客(二)

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                         <!-- 隐藏域,主键,让thinkphp知道修改的是哪一条数据 -->
2                         <input type="hidden" name="id" value="{$data.id}" >
3                         <!--  -->

验证器中

 1 <?php
 2 namespace appadminvalidate;
 3 
 4 use thinkValidate;
 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             <!-- Page Sidebar -->
 10             {include file="common/left"}
 11             <!-- /Page Sidebar -->
 12 
 13             <!-- Page Content -->
 14             <div class="page-content">
 15                 <!-- Page Breadcrumb -->
 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                 <!-- /Page Breadcrumb -->
 25 
 26                 <!-- Page Body -->
 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%">ID</th>
 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                 <!-- /Page Body -->
 90             </div>
 91             <!-- /Page Content -->
 92         </div>    
 93     </div>
 94 
 95         <!--Basic Scripts-->
 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     <!--Beyond Scripts-->
100     <script src="__PUBLIC__/style/beyond.js"></script>
101     
102 
103 
104 </body>

控制器

  1 <?php
  2 namespace appadmincontroller;
  3 
  4 use thinkController;
  5 use thinkDb;
  6 use thinkValidate;
  7 use thinkLoader;
  8 use appadminmodelLinks 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 }
View Code

验证

 1 <?php
 2 namespace appadminvalidate;
 3 
 4 use thinkValidate;
 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 }
View Code

模型

1 <?php
2 namespace appadminmodel;
3 
4 use thinkModel;
5 class Links extends Model
6 {
7     
8 }
View Code

四、栏目功能

验证器里面有一个验证表中字段是否重复的功能

 1 <?php
 2 namespace appadminvalidate;
 3 
 4 use thinkValidate;
 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',

原文地址:https://www.cnblogs.com/Renyi-Fan/p/8762363.html