zoukankan      html  css  js  c++  java
  • TP6管理后台实战第五天文章管理

    第五天目标:

    1、文章管理
     

    进入开发:

    1、文章分类管理

      1.1 文章分类列表 -- ok
        搜索项: 分类名称 分类状态
        列表项:ID,分类名称,排序,文章数,是否显示 操作(编辑,删除)
      1.2 添加文章分类 -- ok
      1.3 修改文章分类 -- ok
      1.4 删除文章分类 -- ok
     
    控制器代码:
      1  /**
      2      * 文章分类列表
      3      */
      4     public function newsCateList()
      5     {
      6         if (!$this->access)  exit('无此访问权限!');
      7 
      8         $data = request()->param();
      9 
     10         $return_data = array(
     11             'admin_info' => $this->admin_info,
     12             'admin_id'   => $this->admin_id
     13         );
     14 
     15         //搜索条件
     16         $whereCond = array();
     17         if (!empty($data['cate_name'])) $whereCond[] = array('cate_name','like','%'.$data['cate_name'].'%');
     18         if (!empty($data['is_show'])) $whereCond[] = array('is_show','=',$data['is_show']);
     19         
     20         //搜索默认值
     21         $return_data['cate_name']     = empty($data['cate_name'])?'':$data['cate_name'];
     22         $return_data['is_show'] = empty($data['is_show'])?'':$data['is_show'];
     23       
     24 
     25         //获取列表
     26         $data_list = Db::name('yphp_news_cate')->where($whereCond)->order('cate_orders', 'desc')->paginate(array(
     27             'list_rows' => 10,
     28             'query'     => $data
     29         ))->each(function($item, $key){
     30 
     31             $item['news_count'] = Db::name('yphp_news')->where("cate_id",$item['id'])->count();
     32             return $item;
     33         });
     34 
     35 
     36         $return_data['data_list'] = $data_list;
     37         // 获取分页显示
     38         $return_data['page'] = $data_list->render();
     39 
     40        return view("news/news_cate_list",$return_data);
     41     }
     42 
     43     /**
     44      * 文章分类
     45      */
     46     public function newsCateDel()
     47     {
     48         if (!$this->access)  return json(array('status'=>'FAIL','msg'=>'无此访问权限!')); 
     49 
     50        $id  = request()->param('id');
     51 
     52        if (!empty($id)) 
     53        {
     54 
     55           $news_count = Db::name('yphp_news')->where("cate_id",$id)->count();
     56           if ($news_count > 0) 
     57           {
     58               return json(array('status'=>'FAIL','msg'=>'删除失败,该分类下还有'.$news_count.'篇文章'));
     59           }
     60           else
     61           {
     62             Db::name('yphp_news_cate')->where("id",$id)->delete();
     63             return json(array('status'=>'SUCCESS','msg'=>'删除成功'));
     64           }
     65        }
     66     }
     67 
     68     /**
     69      * 添加文章分类
     70      */
     71     public function newsCateAdd()
     72     {
     73         if (!$this->access)  exit('无此访问权限!');
     74 
     75        return view("news/news_cate_add");
     76     }
     77     /**
     78      * 修改文章分类
     79      */
     80     public function newsCateEdit()
     81     {
     82         if (!$this->access)  exit('无此访问权限!');
     83         
     84        $id = request()->param('id');
     85 
     86 
     87        $info = Db::name('yphp_news_cate')->where('id',$id)->find();
     88 
     89         return view("news/news_cate_edit",array('info'=>$info));
     90     }
     91     /**
     92      * 添加/修改文章分类操作
     93      */
     94     public function newsCateAddAct()
     95     {
     96        $data = request()->param();
     97 
     98        if(empty($data['id']))
     99        {
    100          $cate_id = Db::name('yphp_news_cate')->strict(false)->insertGetId($data);
    101          if ($cate_id > 0) 
    102          {
    103              return json(array('status'=>'SUCCESS','msg'=>'添加成功'));
    104          }
    105          else
    106          {
    107             return json(array('status'=>'FAIL','msg'=>'添加分类失败'));
    108          }
    109        }
    110        else
    111        {
    112          //修改
    113          Db::name('yphp_news_cate')->strict(false)->update($data);
    114          return json(array('status'=>'SUCCESS','msg'=>'修改成功!'));
    115        }
    116     }
    View Code

    2、文章管理

      2.1 文章列表 -- ok
        搜索项:标题,文章分类,文章状态,是否推荐
      2.2 添加文章 -- ok
      2.3 修改文章 -- ok
      2.3 删除文章 -- ok
     
     控制器代码
      1 /**
      2      * 文章列表
      3      */
      4     public function newsList()
      5     {
      6 
      7         if (!$this->access)  exit('无此访问权限!');
      8 
      9         $data = request()->param();
     10 
     11         $return_data = array(
     12             'admin_info' => $this->admin_info,
     13             'admin_id'   => $this->admin_id
     14         );
     15 
     16         //搜索条件
     17         $whereCond = array();
     18         if (!empty($data['news_title'])) $whereCond[] = array('news_title','like','%'.$data['news_title'].'%');
     19         if (!empty($data['cate_id'])) $whereCond[] = array('cate_id','=',$data['cate_id']);
     20         if (!empty($data['is_show'])) $whereCond[] = array('is_show','=',$data['is_show']);
     21         if (!empty($data['is_recommed'])) $whereCond[] = array('is_recommed','=',$data['is_recommed']);
     22         
     23         //搜索默认值
     24         $return_data['news_title']     = empty($data['news_title'])?'':$data['news_title'];
     25         $return_data['cate_id'] = empty($data['cate_id'])?'':$data['cate_id'];
     26         $return_data['is_show'] = empty($data['is_show'])?'':$data['is_show'];
     27         $return_data['is_recommed'] = empty($data['is_recommed'])?'':$data['is_recommed'];
     28 
     29         //获取列表
     30         $data_list = Db::name('yphp_news')->where($whereCond)->where("is_del","1")->order('id', 'desc')->paginate(array(
     31             'list_rows' => 10,
     32             'query'     => $data
     33         ))->each(function($item, $key){
     34 
     35             $item['cate_name'] = Db::name('yphp_news_cate')->where("id",$item['cate_id'])->value('cate_name');
     36             return $item;
     37         });
     38         
     39         $return_data['cate_list'] = Db::name('yphp_news_cate')->where("is_show",1)->order('cate_orders', 'desc')->select();
     40 
     41         $return_data['data_list'] = $data_list;
     42         // 获取分页显示
     43         $return_data['page'] = $data_list->render();
     44 
     45        return view("news/news_list",$return_data);
     46     }
     47 
     48     /**
     49      * 文章回收站
     50      */
     51     public function newsTrash()
     52     {
     53         if (!$this->access)  exit('无此访问权限!');
     54 
     55         $data = request()->param();
     56 
     57         $return_data = array(
     58             'admin_info' => $this->admin_info,
     59             'admin_id'   => $this->admin_id
     60         );
     61 
     62         //搜索条件
     63         $whereCond = array();
     64         if (!empty($data['news_title'])) $whereCond[] = array('news_title','like','%'.$data['news_title'].'%');
     65         if (!empty($data['cate_id'])) $whereCond[] = array('cate_id','=',$data['cate_id']);
     66         if (!empty($data['is_show'])) $whereCond[] = array('is_show','=',$data['is_show']);
     67         if (!empty($data['is_recommed'])) $whereCond[] = array('is_recommed','=',$data['is_recommed']);
     68         
     69         //搜索默认值
     70         $return_data['news_title']     = empty($data['news_title'])?'':$data['news_title'];
     71         $return_data['cate_id'] = empty($data['cate_id'])?'':$data['cate_id'];
     72         $return_data['is_show'] = empty($data['is_show'])?'':$data['is_show'];
     73         $return_data['is_recommed'] = empty($data['is_recommed'])?'':$data['is_recommed'];
     74 
     75         //获取列表
     76         $data_list = Db::name('yphp_news')->where($whereCond)->where("is_del","2")->order('id', 'desc')->paginate(array(
     77             'list_rows' => 10,
     78             'query'     => $data
     79         ))->each(function($item, $key){
     80 
     81             $item['cate_name'] = Db::name('yphp_news_cate')->where("id",$item['cate_id'])->value('cate_name');
     82             return $item;
     83         });
     84         
     85         $return_data['cate_list'] = Db::name('yphp_news_cate')->where("is_show",1)->order('cate_orders', 'desc')->select();
     86 
     87         $return_data['data_list'] = $data_list;
     88         // 获取分页显示
     89         $return_data['page'] = $data_list->render();
     90 
     91        return view("news/news_trash_list",$return_data);
     92     }
     93 
     94      /**
     95      * 文章删除 放回收站
     96      */
     97     public function newsDel()
     98     {
     99         if (!$this->access)  return json(array('status'=>'FAIL','msg'=>'无此访问权限!')); 
    100 
    101        $id  = request()->param('id');
    102 
    103        if (!empty($id)) 
    104        {
    105 
    106           $data = array(
    107             'is_del'        => 2,
    108             'del_datetime'  => date("Y-m-d H:i:s")
    109           );
    110            Db::name('yphp_news')->where("id",$id)->update($data);
    111 
    112            return json(array('status'=>'SUCCESS','msg'=>'删除成功,文章已放入回收站'));
    113        }
    114     }
    115     /**
    116      * 文章删除  彻底删除
    117      */
    118     public function newsDelReal()
    119     {
    120 
    121         if (!$this->access)  return json(array('status'=>'FAIL','msg'=>'无此访问权限!')); 
    122 
    123         $id  = request()->param('id');
    124 
    125        if (!empty($id)) 
    126        {
    127 
    128 
    129            Db::name('yphp_news')->where("id",$id)->delete();
    130 
    131            return json(array('status'=>'SUCCESS','msg'=>'删除成功'));
    132        }
    133     }
    134 
    135     /**
    136      * 文章恢复
    137      */
    138     public function newsDelRestore()
    139     {
    140         if (!$this->access)  return json(array('status'=>'FAIL','msg'=>'无此访问权限!')); 
    141 
    142         $id  = request()->param('id');
    143 
    144        if (!empty($id)) 
    145        {
    146 
    147 
    148            $data = array(
    149             'is_del'        => 1,
    150             'del_datetime'  => null
    151           );
    152            Db::name('yphp_news')->where("id",$id)->update($data);
    153 
    154            return json(array('status'=>'SUCCESS','msg'=>'删除成功'));
    155        }
    156     }
    157 
    158    
    159 
    160     /**
    161      * 添加文章
    162      */
    163     public function newsAdd()
    164     {
    165         if (!$this->access)  exit('无此访问权限!');
    166 
    167        //获取文章分类
    168        $cate_list = Db::name('yphp_news_cate')->where("is_show",1)->order('cate_orders', 'desc')->select();
    169        
    170        return view("news/news_add",array('cate_list'=>$cate_list));
    171     }
    172     /**
    173      * 修改文章
    174      */
    175     public function newsEdit()
    176     {
    177         if (!$this->access)  exit('无此访问权限!');
    178 
    179        $id = request()->param('id');
    180 
    181        $cate_list = Db::name('yphp_news_cate')->where("is_show",1)->order('cate_orders', 'desc')->select();
    182 
    183        $info = Db::name('yphp_news')->where('id',$id)->find();
    184 
    185         return view("news/news_edit",array('info'=>$info,'cate_list'=>$cate_list));
    186     }
    187 
    188     /**
    189      * 上传图片
    190      */
    191     public function uploadImg()
    192     {
    193         // 获取表单上传文件 例如上传了001.jpg
    194         $file = request()->file('file');
    195         $fiels = request()->file();
    196         // 上传到本地服务器
    197          try {
    198             validate(['image'=>'fileSize:5120|fileExt:jpg,png,gif,jpeg,bmp|fileMime:image/jpeg,image/gif,image/png,image/bmp'])->check($fiels);
    199 
    200             $savename = \think\facade\Filesystem::disk('public')->putFile( 'news', $file);
    201 
    202             return json(array('status'=>'SUCCESS','msg'=>"上传成功",'filename'=>"/uploads/".$savename));
    203 
    204         } catch (\think\exception\ValidateException $e) {
    205 
    206             return json(array('status'=>'FAIL','msg'=>"上传失败".$e->getMessage()));
    207         }
    208     }
    209 
    210     /**
    211      *  添加文件操作
    212      */
    213     public function newsAddAct()
    214     {
    215         $data = request()->param();
    216 
    217         $data['news_desc'] = htmlspecialchars($data['news_desc']);
    218         $data['news_content'] = htmlspecialchars($data['news_content']);
    219 
    220         if(empty($data['id']))
    221        {
    222 
    223         $data['add_datetime'] = date("Y-m-d H:i:s");
    224 
    225          $id = Db::name('yphp_news')->strict(false)->insertGetId($data);
    226          if ($id > 0) 
    227          {
    228              return json(array('status'=>'SUCCESS','msg'=>'添加成功'));
    229          }
    230          else
    231          {
    232             return json(array('status'=>'FAIL','msg'=>'添加失败'));
    233          }
    234        }
    235        else
    236        {
    237          //修改
    238          Db::name('yphp_news')->strict(false)->update($data);
    239          return json(array('status'=>'SUCCESS','msg'=>'修改成功!'));
    240        }
    241     }
    View Code

    3、文章回收站

      3.1 回收站列表 -- ok
      3.2 彻底删除文章 -- ok
      3.3 恢复已删除的文章 -- ok

    4、遇到的问题

     
      4.1  文章内容要有富文本编辑器编辑内容和文件上传。具体怎么操作呢 
     
     
      4.2 文章封面,需要有无刷新进行图片上传。具体怎么操作?
     
        见文章:TP6框架中无刷新上传文件
     

    唠唠嗑:

    遇到问题就要去解决,慢慢的解决的问题多了,在看到新的问题就有了思路。
    遇到问题实在没解决也没关系,先绕过去或者找一个替代方案,后期多看看问题相关的内容,多思考,没准有一天就突然明白了。
     
    附完成后部分效果图:
     
    文章列表
     
    添加文章
     

    编辑文章

    文章分类管理

  • 相关阅读:
    iOS开发——C篇&数组与指针
    iOS开发——C篇&动态内存分配
    助教工作总结
    助教周报(第二轮)— 王茹瑶,林泽龙,范青青
    助教周报(第一轮)---王茹瑶
    UML总结--熊熊的奇幻旅程
    今天是一个睡前的小故事(是谁要给的大饼)
    我与oracle的爱恨情仇(第一章)
    第三次结对作业(王茹瑶+柯智腾)
    第二次结对作业(王茹瑶+柯智腾)
  • 原文地址:https://www.cnblogs.com/ypeih/p/15471383.html
Copyright © 2011-2022 走看看