新闻模块小结

原创 2018-12-21 16:50:20 295
摘要:    前言,由于操作新闻列表需要传入uid,也就是当前username对应的id ,为了方便操作,将登陆管理员的的id传入session中了$user = User::where('username',$username)->find(); Session::set('id',$user['

    前言,由于操作新闻列表需要传入uid,也就是当前username对应的id ,为了方便操作,将登陆管理员的的id传入session中了

$user = User::where('username',$username)->find();
Session::set('id',$user['id']);

一.新闻列表模块

    * 和管理员列表差不多,由于数据表创建的时候,作者字段选择的是传入user表的id值,模型model/News.php使用了获取器,当获取uid时,输出对应User表中的username

    model/News.php如下

<?php
namespace app\admin\model;
use think\Model;
use think\model\concern\SoftDelete;
use app\admin\model\User as UserModel;    //在模型类中引入其他模型类,这样可以么?

class News extends Model
{
    //使用trait软删除
    use SoftDelete;

    //表名
    protected $table = 'news';

    //主键
    protected $pk = 'id';

    //开启自动时间戳
    protected $autoWriteTimestamp = true;


    //设置一下用户自定义的新增和更新时间的字段名
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';

    //设置软删除字段
    protected $defaultSoftDelete = 'delete_time';

    //设置获取器  当获取UID时候,将uid更改成user表中的username
    public function getUidAttr($value)
    {
        $info = UserModel::get($value);
        //返回username
        return $info['username'];
    }
}

    * 控制器News/index方法

namespace app\admin\controller;
use app\admin\common\Common;
use think\facade\Request;
use think\facade\Session;
use app\admin\model\User;
use app\admin\model\News as NewsModel;

class News extends Common
{
    //渲染新闻列表页面
    public function index()
    {
        //分页内容对象
        $paginate = NewsModel::order('id')
            ->paginate('5',false,['type'=>'bootstrap','var_page'=>'page']);
        //分页变量
        $page = $paginate->render();

        //模板赋值
        $this->view->assign('news',$paginate);
        $this->view->assign('page',$page);
        
        //渲染模板
        return $this->view->fetch();
    }

2.png

3.png

二.新闻的新增功能

    依旧是先渲染新增视图,然后获取数据,将数据写入到数据表中,uid的值为存入session中的数值,其他的值由表单中传过来

   //渲染新闻添加页面
    public function add()
    {
        return $this->view->fetch();
    }

    //新闻执行操作
    public function doAdd()
    {
        //获取数据
        $data = Request::param();
        //判断数据是否为空
        if($data == ''){
            return ['res'=>0,'msg'=>'没有上传的新闻'];
        }
        //获取session中的id
        $username = Session::get('id');
        //传入数据集合中
        $data['uid'] = $username;
        //执行新增
        $res = NewsModel::create($data);
        if($res){
            return ['res'=>1,'msg'=>'新增新闻成功'];
        }else{
            return ['res'=>2,'msg'=>'新增新闻失败'];
        }
    }

    富文本编辑器的上传图片接口

    public function upload()
    {
//        if($_FILES['img']['size'] == 0){
//            return '请选择文件';
//        }
        //获取上传的图片
        $file = Request::file('img');
        $info = $file->validate(['ext' => 'jpg,jpeg,gif,png', 'size' => '20000000'])->move('upload');
        if($info){
            return json(['errno'=>0,'data'=>['/upload/'.$info->getSaveName()]]);
        }else{
            return $file->getError();
        }
    }

4.png

三.更新操作

    将要更新的新闻id由路由中传过来,进行查询,将数据赋值给模板变量,进行遍历输出,然后在将修改的内容通过表单异步到控制器中进行操作

public function doEdit()
{
    //获取提交的数据
    $data = Request::param();
    $data['uid'] = Session::get('id');    //获取uid的值
    //执行更新
    $res = NewsModel::update($data,
        function($query) use($data){
            $query->where('id','=',$data['id']);
    });
    if($res){
        return ['res' => 1, 'msg' => '修改成功'];
    }else{
        return ['res' => 0, 'msg' => '修改失败'];
    }
}

    四.删除操作

    删除操作和用户表操作几乎一样,运用软删除进行操作,根据传过来的id进行删除 再模型类中进行设置

public function del()
{
    //获取删除的新闻id
    $newsId = Request::param('id');
    if($newsId == ''){
        return ['res' => 2, 'msg' => '非法操作!'];
    }
    $res = NewsModel::destroy($newsId);
    if($res){
        return ['res' => 1, 'msg' => '删除成功'];
    }else{
        return ['res' => 0, 'msg' => '删除失败'];
    }

}




批改老师:韦小宝批改时间:2018-12-21 17:05:39
老师总结:写的很不错!其实这里的新闻图片还可以存储新闻的id哦!在实际的开发中最好还是存储id比较好!

发布手记

热门词条