php新闻模块,实战:新闻模块的实现

摘要:1.控制器类代码<?phpnamespace app\admin\controller;use app\admin\controller\Common;use app\admin\model\NewsModel;use think\facade\Request;use think\facade\Session;class News extends Common{    p

1.控制器类代码

namespace app\admin\controller;

use app\admin\controller\Common;

use app\admin\model\NewsModel;

use think\facade\Request;

use think\facade\Session;

class News extends Common

{

public function index()

{

$news = new NewsModel();

$new = $news->order('id', 'desc')->paginate(8);

$this->view->new = $new;

//        渲染新闻列表

return $this->fetch();

}

public function add()

{

//        渲染添加界面

return $this->fetch();

}

public function upload()

{

//        获取图片上传信息

$file = Request::file('img');

//        验证图片信息并移动到指定目录

if ($info = $file->validate(['ext' => 'jpg,jpeg,png,gif'])->move('upload')) {

//           返回上传成功信息

return json(['errno' => 0, 'data' => ['/upload/' . $info->getSaveName()]]);

} else {

//            返回错误信息

return $file->getError();

}

}

public function DOAdd()

{

//        获取前台提交过来的数据

$data = Request::param();

//        加入添加的时间

$data['time'] = time();

//        加入发布新闻的管理员名称

$data['username'] = Session::get('username');

//        将新闻标题独立出来

$title = $data['title'];

//        将新闻标题作为标题来查询数据

$news = NewsModel::where('title', "$title")->find();

//        验证新闻标题是否重复

if ($news == true) {

//        重复并返回提示信息

return ['res' => 0, 'msg' => '新闻标题重复!'];

}

//        实例化模型

$new = new NewsModel();

//        存储验证

if ($new->save($data)) {

//            返回发布成功的信息

return ['res' => 1, 'msg' => '发布成功!'];

} else {

//            返回发布失败的信息

return ['res' => 0, 'msg' => '发布失败!'];

}

}

public function edit()

{

//接收传送过来的id

$newId = Request::param('id');

//查询新闻id对应的新闻信息

$new = NewsModel::get($newId);

//将数据赋值到模板

$this->view->new = $new;

//渲染新闻修改界面

return $this->fetch();

}

public function DoEdit()

{

//获取提交的数据

$data = Request::param();

//        实例化模型

$new = new NewsModel();

//        进行修改操作

$res = $new->save([

'title' => $data['title'],

'desc' => $data['desc'],

'content' => $data['content'],

'username' => Session::get('username'),

'time' => time(),

], ['id' => $data['id']]);

//        验证修改结果

if ($res) {

//            返回修改成功信息

return ['res' => 1, 'msg' => '修改成功'];

} else {

//            返回修改失败信息

return ['res' => 0, 'msg' => '修改失败'];

}

}

public function del()

{

//获取需要删除的新闻id

$newId = Request::param('id');

//实例化模型

$new = new NewsModel();

//        删除并验证

if ($new->destroy($newId)) {

//            返回删除成功提示信息

return ['res' => 1, 'msg' => '删除成功!'];

} else {

//            返回删除失败提示信息

return ['res' => 1, 'msg' => '删除成功!'];

}

}

}

2.视图类代码

(1)新闻编辑界面edit.html

{include file="/public/header"}

*新闻标题

autocomplete="off" class="layui-input">

*简介

{$new.desc}

内容

{:htmlspecialchars_decode($new.content)}

修改

layui.use(['form', 'layer'], function () {

$ = layui.jquery;

var form = layui.form

, layer = layui.layer;

//配置wangEditor富文本编辑器

将要用到的对象添加到全局

var E = window.wangEditor

//生成editor对象

var editor = new E('#editor')

//设置图片上传的控件名称:类似于input的name属性,供接口获取图片信息使用

editor.customConfig.uploadFileName = 'img'

//设置服务上的图片上传处理接口脚本

editor.customConfig.uploadImgServer = '{:url("upload")}'

//创建出富文件编辑器

editor.create()

//自定义验证规则

form.verify({

nikename: function (value) {

if (value.length < 5) {

return '新闻标题至少得5个字符啊';

}

}

});

//监听提交

form.on('submit(add)', function (data) {

console.log(data);

//发异步,把数据提交给php

$.post('{:url(\'DoEdit\')}', {

'title': $('#title').val(),

'id': $('#id').val(),

'desc': $('#desc').val(),

'content': editor.txt.html(),

}, function (data) {

if (data.res == 1) {

layer.alert(data.msg, {icon: 6}, function () {

// 获得frame索引

var index = parent.layer.getFrameIndex(window.name);

//关闭当前frame

parent.layer.close(index);

});

}else{

layer.alert(data.msg, {icon: 6}, function () {

// 获得frame索引

var index = parent.layer.getFrameIndex(window.name);

//关闭当前frame

parent.layer.close(index);

});

}

})

return false;

});

});

(2)新闻增加界面add.html

{include file="/public/header"}

*新闻标题

autocomplete="off" class="layui-input">

*简介

内容

发布

layui.use(['form', 'layer'], function () {

$ = layui.jquery;

var form = layui.form

, layer = layui.layer;

//配置wangEditor富文本编辑器

将要用到的对象添加到全局

var E = window.wangEditor

//生成editor对象

var editor = new E('#editor')

//设置图片上传的控件名称:类似于input的name属性,供接口获取图片信息使用

editor.customConfig.uploadFileName = 'img'

//设置服务上的图片上传处理接口脚本

editor.customConfig.uploadImgServer = '{:url(\'upload\')}'

//创建出富文件编辑器

editor.create()

//自定义验证规则

form.verify({

nikename: function (value) {

if (value.length < 5) {

return '昵称至少得5个字符啊';

}

}

, pass: [/(.+){6,12}$/, '密码必须6到12位']

, repass: function (value) {

if ($('#L_pass').val() != $('#L_repass').val()) {

return '两次密码不一致';

}

}

});

//监听提交

form.on('submit(add)', function (data) {

console.log(data);

//发异步,把数据提交给php

$.post('{:url(\'DOAdd\')}', {

'title': $('#title').val(),

'desc': $('#desc').val(),

'content': editor.txt.html(),

}, function (data) {

if (data.res == 1) {

layer.alert(data.msg, {icon: 6}, function () {

// 获得frame索引

var index = parent.layer.getFrameIndex(window.name);

//关闭当前frame

parent.layer.close(index);

});

} else {

layer.alert(data.msg, {icon: 6}, function () {

// 获得frame索引

var index = parent.layer.getFrameIndex(window.name);

//关闭当前frame

parent.layer.close(index);

});

}

});

return false;

});

});

(3)新闻详情页index.html

{include file="/public/header"}

添加

共有数据:88 条

class="layui-icon">

新闻ID新闻标题新闻图片新闻简介发布管理员发布日期操作

{volist name="new" id="news"}

{$news.id}{$news.title} #{$news.desc}{$news.username}{$news.time|date="Y-m-d"}

{/volist}

{$new|raw}

layui.use('laydate', function () {

var laydate = layui.laydate;

//执行一个laydate实例

laydate.render({

elem: '#start' //指定元素

});

//执行一个laydate实例

laydate.render({

elem: '#end' //指定元素

});

});

/*用户-删除*/

function member_del(obj, id) {

layer.confirm('确认要删除吗?', function (index) {

//发异步删除数据

$.get('{:url(\'del\')}', 'id=' + id, function (data) {

if (data.res == 1) {

$(obj).parents("tr").remove();

layer.msg('已删除!', {icon: 1, time: 1000});

}

});

});

}

3.模型类代码

namespace app\admin\model;

use \think\Model;

class NewsModel extends Model

{

protected $table='news';

protected $pk='id';

}

4.运行结果

8f34ef6aeda5324cf9fb1924a765e10a.png

批改老师:查无此人批改时间:2019-05-23 13:20:53

老师总结:完成的不错,后台cms管理,页面不需要多绚丽,但是功能要做的方便。继续加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值