社区项目(7):用户管理、文章管理、站点管理、热门排行
用户管理说明:超级管理员可以看到所有的用户列表。普通用户只能看见自己超级管理员只拥有删除权限用户列表该功能也在User.php中实现//用户列表public function userList(){//1、获取当前用户的id和权限级别$data['admin_id'] = Session::get('admin_id');$data['admin_power'] = Session::get('a
·
用户管理
说明:
超级管理员可以看到所有的用户列表。普通用户只能看见自己
超级管理员只拥有删除权限
用户列表
该功能也在User.php中实现
//用户列表
public function userList()
{
//1、获取当前用户的id和权限级别
$data['admin_id'] = Session::get('admin_id');
$data['admin_power'] = Session::get('admin_power');
// dump($data);
//2、获取当前用户信息
$userList = ModelUser::where('id', $data['admin_id'])->select();
//3、如果是超级管理员则获取所有用户
if ($data['admin_power'] == 1) {
$userList = ModelUser::select();
}
//4、模板赋值
$this->view->assign('title', '用户管理');
$this->view->assign('empty', '<span style="color:red">没有任何数据</span>');
$this->view->assign('userList', $userList);
//5、渲染模板
$this->view->fetch('userList');
}
列表模板
{layout name="public/layout" /}
<h3 class="text-center">用户列表</h3>
<table class="table table-striped table-hover text-center">
<tr>
<td>ID</td>
<td>用户名</td>
<td>邮箱</td>
<td>手机号</td>
<td>注册时间</td>
<td>状态</td>
<td>操作</td>
</tr>
{volist name="userList" id="user" empty="$empty"}
<tr>
<td>{$user.id}</td>
<td>{$user.name}</td>
<td>{$user.email}</td>
<td>{$user.mobile}</td>
<td>{$user.create_time}</td>
<td>{$user.status==1?'启用':'弃用'}</td>
<td>
<!-- 非当前用户是不允许编辑其它用户的 -->
{eq name="$user.id" value="$Think.session.admin_id"}
<a href=""><span class="glyphicon glyphicon-edit"></span></a>
{/eq} {neq name="$user.id" value="$Think.session.admin_id"}
<a href=""><span class="glyphicon glyphicon-trash"></span></a>
{/neq}
</td>
</tr>
{/volist}
</table>
编辑操作
//用户编辑
public function edit()
{
//1、获取要编辑的用户id
$id = Request::param('id');
//2、获取当前用户的信息
$info = ModelUser::where('id', $id)->find();
//3、编辑界面的模板变量
$this->view->assign('title', '用户编辑');
$this->view->assign('userInof', $info);
//4、渲染页面
return $this->view->fetch('edit');
}
更新编辑操作
//保存用户编辑
public function editSave()
{
$data = Request::param();
//dump($data);
//取出主键,并删除主键
$id = $data['id'];
unset($data['id']);
//加密密码
$data['password'] = sha1($data['password']);
//更新数据库
if (ModelUser::where('id',$id)->data($data)->update()) {
//修改session中的用户名
Session::set('admin_name',$data['name']);
return $this->success('更新成功', 'admin/user/userlist');
}
return $this->error('没有更新或更新失败');
}
删除操作
删除操作需要给用户提示,防止错删
<!-- 删除 -->
<a href="" id="del" onclick="del('{$user.id}');return false"
><span class="glyphicon glyphicon-trash"></span
></a>
<script>
function del(){
if(confirm('是否要删除该用户?')==true){
window.location.href="{:url('admin/user/del',['id'=>$user.id])}"
}
}
</script>
根据传递来的id,删除数据库中的用户,并跳转到列表页
//删除用户
public function del(){
$id = Request::param('id');
//dump($id);
if(ModelUser::where('id',$id)->delete()){
return $this->success('删除成功!','admin/user/userlist');
}
return $this->error('删除失败!');
}
文章管理
分类管理
该功能只对管理原开发,普通用户无法使用,因此对之前的菜单进行修改
<!-- 只有管理员才能操作网站 -->
{if ($Think.session.admin_power == '1') ||($Think.session.admin_power =='管理员')}
<ul class="nav nav-pills nav-stacked">
<li class="nav-header h3">系统管理</li>
<li>
<a href="#"> <span class="glyphicon glyphicon-cog"> 网站管理</span></a>
</li>
</ul>
{/if}
<ul class="nav nav-pills nav-stacked">
<li class="nav-header h3">用户管理</li>
<li>
<a href="{:url('admin/user/userlist')}"> <span class="glyphicon glyphicon-user"> 用户列表</span></a>
</li>
</ul>
<ul class="nav nav-pills nav-stacked">
<li class="nav-header h3">文章管理</li>
{if ($Think.session.admin_power == '1') ||($Think.session.admin_power =='管理员')}
<li>
<a href="#"> <span class="glyphicon glyphicon-list"> 分类管理</span></a>
</li>
{/if}
<li>
<a href="#"> <span class="glyphicon glyphicon-edit"> 文章管理</span></a>
</li>
</ul>
分类模型
class Cate extends Model{
protected $pk='id';
protected $table='zh_article_category';
}
分类控制器
//分类管理的首页
public function index(){
//判断是否登录
$this->isLogin();
//登录后直接跳转到分类界面
$this->redirect('admin/cate/catelist');
}
//分类列表
public function cateList(){
//1、检测是否登录
$this->isLogin();
//2、获取所有分类
$cate=ModelCate::all();
//3、设置模板变量
$this->view->assign('title','分类列表');
$this->view->assign('empty','<span>当前无分类</span>');
$this->view->assign('cateList',$cate);
//4、渲染模板
return $this->view->fetch('catelist');
}
//编辑界面
public function edit(){
//获取当前分类的id
$id=Request::param('id');
//2、获取当前用户的信息
$info = ModelCate::where('id', $id)->find();
//3、编辑界面的模板变量
$this->view->assign('title', '分类编辑');
$this->view->assign('cateInof', $info);
//4、渲染页面
return $this->view->fetch('edit');
}
//保存栏目编辑
public function editSave()
{
$data = Request::param();
//dump($data);
//取出主键,并删除主键
$id = $data['id'];
unset($data['id']);
//更新数据库
if (ModelCate::where('id', $id)->data($data)->update()) {
return $this->success('更新成功', 'admin/cate/catelist');
}
return $this->error('没有更新或更新失败');
}
注: 分类列表界面、编辑界面参照用户管理进行简单修改
增加分类添加功能
在分类列表中增加添加区域
<!-- 分类添加 -->
<a class="btn btn-info" href="{:url('admim/cate/add')}" role="button">添加分类</a>
创建添加界面,根据编辑界面简单修改
功能实现
//保存添加信息
public function addSave(){
//获取要保存的信息
$data=Request::param();
//更新数据库
if(ModelCate::create($data)){
return $this->success('添加成功','admin/cate/catelist');
}
return $this->error('更新失败,请重试');
}
文章列表
创建文章对应的模型
<?php
namespace app\admin\common\model;
use think\Model;
class Article extends Model{
protected $pk='id';
protected $table='zh_article';
}
控制器
class Article extends Base
{
//文章列表的首页
public function index()
{
//判断是否登录
$this->isLogin();
//登录后直接跳转到分类界面
$this->redirect('admin/article/articlelist');
}
//文章列表
public function articleList()
{
//1、检测是否登录
$this->isLogin();
/**
* 2、获取文章列表
* 管理员可以查看所有文章,用户只能查看自己的文章,通过用户权限判断
*/
//获取用户id、权限
$pow = Session::get('admin_power');
$id = Session::get('admin_id');
//dump($pow);
if ($pow == 1) {
$list = ModelArticle::paginate(3);
} else {
$list = ModelArticle::where('user_id', $id)->paginate(3);
}
//3、设置模板变量
$this->view->assign('title', '文章列表');
$this->view->assign('empty', '<span>文章列表为空</span>');
$this->view->assign('artList', $list);
//4、渲染模板
return $this->view->fetch('artlist');
}
//文章编辑界面
public function edit()
{
//获取当前文章的id
$id = Request::param('id');
//2、获取当前文章的信息
$info = ModelArticle::where('id', $id)->find();
//文章分类
$cate = Cate::all();
//3、编辑界面的模板变量
$this->view->assign('title', '文章编辑');
$this->view->assign('artInof', $info);
$this->view->assign('catelist',$cate);
//4、渲染页面
return $this->view->fetch('edit');
}
//保存文章编辑
public function editSave()
{
$data = Request::param();
// dump($data);
//更新数据库
if (ModelArticle::where('id', $data['id'])->data($data)->update()) {
return $this->success('更新成功', 'admin/article/articlelist');
}
return $this->error('没有更新或更新失败');
}
}
站点管理
创建模型
略
控制器
<?php
namespace app\admin\controller;
use app\admin\common\controller\Base;
use app\admin\common\model\Site as ModelSite;
class Site extends Base{
//站点的管理首页
public function index(){
//1、获取以下站点信息
$siteInfo=ModelSite::get(['status'=>1]);
//2、模板赋值
$this->view->assign('siteInfo',$siteInfo);
//dump($siteInfo);
$this->view->assign('title','站点管理');
//3、渲染模板
return $this->view->fetch('index');
}
//保存站点更新数据
public function siteSave()
{
//获取数据
$data = Request::param();
// dump($data);
//更新数据
$res = ModelSite::update($data);
if ($res) {
return $this->success('站点更新成功', 'admin/site.index');
} else {
return $this->error('更新失败,请重试');
}
}
}
关于网站的关闭,网站关闭只能是关闭网站前台。因此在前台模块的common目录下的公共控制器(Base.php),添加关闭和开启的方法
该方法在初始化方法里进行调用
/**
* 是否开启网站前台
*/
protected function is_open()
{
//1、获取当前站点的状态
$is_open = Site::where('status', 1)->value('is_open');
/**
* 2、判断站点是否关闭
* 关闭:只允许关闭前台,后台不允许关闭
*/
if ($is_open == 0 && Request::module() == 'index') {
//关闭网站
$info = <<<info
<body style="background:#333">
<h1 style="color:red;text-align: center;margin-top: 50px;">抱歉,网站正在维护,请稍后重试</h1>
<body>
info;
exit($info);
}
}
热门排序
主要根据文章阅读数来判断文章是否热门。该部分在前台的base.php中完成
/**
* 根据文章阅读量来获取热门文章
*/
public function getHotArt()
{
$info = Article::where('status', 1)->order('read_count')->limit(6)->select();
$this->view->assign('hotArt', $info);
}
该方法在初始化方法中进行调用
修改right.html
<div class="col-md-4">
<div class="page-header">
<h2>热门排行</h2>
</div>
<!-- 列表组 -->
<div class="list-group">
{volist name="hotArt" id="item"}
{if $i==1}
<a href="#" class="list-group-item active"> {$item.title} <span class="badge">{$item.read_count}</span></a>
{else /}
<a href="#" class="list-group-item"> {$item.title} <span class="badge">{$item.read_count}</span></a>
{/if}
{/volist}
</div>
</div>
更多推荐
所有评论(0)