摘要: 前言,由于操作新闻列表需要传入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();
}

二.新闻的新增功能
依旧是先渲染新增视图,然后获取数据,将数据写入到数据表中,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();
}
}
三.更新操作
将要更新的新闻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比较好!