个人博客系统用户管理的实现
控制器UserController.php代码:
这里我将返回数据信息的操作写成了一个方法,方法写在publicFunction组件中,这样所有的控制器都可以调用
<?php
/**
* Created by PhpStorm.
* User: wyq
* Date: 2021/7/19
* Time: 16:32
*/
class UserController extends AppController
{
public $components = array('Session','publicFunction');
public $helpers =array('Html', 'Form');
/*
* 用户列表
* 获取用户全部信息
* 渲染页面
*/
public function index(){
$page = $_GET['page'] ? $_GET['page'] : 1;
$limit = 2;
$count = $this->User->count();
$pageCount = ceil($count/$limit);
$params = $this->User->findUser($page,$limit);
$this->set(array('params'=>$params,'page'=>$page,'pageCount'=>$pageCount));
}
/*
* 新增、修改用户
*
*/
public function dell(){
$params = $_POST;
$res = $this->User->save($params);
if ($res){
//组件类中的方法
$this->publicFunction->success($res);
}else{
//组件类中的方法
$this->publicFunction->fail();
}
}
}
模型User.php代码:
这里模型的代码一个获取用户总量、一个给用户信息做分页查询。
<?php
/**
* Created by PhpStorm.
* User: wyq
* Date: 2021/7/19
* Time: 16:30
*/
class User extends AppModel
{
/*
* 查询user表总数
*/
public function count(){
$this->setSource('users');
$count = $this->find('count');
return $count;
}
/*
* 分页查询
* @param int page 当前页数
* @param int limit 页面展示数据数
* return array data 展示数据
*/
public function findUser($page,$limit){
$this->setSource('users');
$data = $this->find('all',array(
'limit' => $limit,
'page' => $page,
));
return $data;
}
}
视图user.ctp代码:
这里我再进一步完善该系统的详细功能,我这里整合了boostrap分页,这是和前面的页面实现有一点不同的地方,下面的链接有详细解读该代码。
<div style="margin-bottom: 5px">
<span class="layui-breadcrumb">
<a href="">首页</a>
<a><cite>用户管理</cite></a>
</span>
</div>
<button type="button" onclick="add()" class="layui-btn" data-toggle="modal" data-target="#myModal" >新增用户</button>
<table class="layui-table">
<colgroup>
<col width="150">
<col width="200">
<col>
</colgroup>
<tr>
<th>编号</th>
<th>用户名</th>
<th>密码</th>
<th>手机号码</th>
<th>邮箱</th>
<th>昵称</th>
<th>用户签名</th>
<th>操作</th>
</tr>
<?php foreach($params as $v): ?>
<tr>
<td><?=$v['User']['id']?></td>
<td><?=$v['User']['username']?></td>
<td><?=$v['User']['password']?></td>
<td><?=$v['User']['phone']?></td>
<td><?=$v['User']['email']?></td>
<td><?=$v['User']['nickname']?></td>
<td><?=$v['User']['sign']?></td>
<td>
<i class="layui-icon layui-icon-edit" data-toggle="modal" data-target="#myModal" onclick="add(<?=$v['User']['id']?>,'<?=$v['User']['username']?>', '<?=$v['User']['password']?>', '<?=$v['User']['phone']?>', '<?=$v['User']['email']?>', '<?=$v['User']['nickname']?>', '<?=$v['User']['sign']?>' )"></i>
<i class="layui-icon layui-icon-subtraction" onclick="del()"><a></a></i>
</td>
</tr>
<?php endforeach; ?>
</table>
<!--分页-->
<nav aria-label="Page navigation">
<ul class="pagination">
<li <?php if($page == 1 || !$page): ?> class="disabled" <?php endif; ?> >
<a <?php if($page == 1 || !$page): ?> οnclick="return false" <?php endif; ?> href="/user/index?page=<?= $page-1?>" aria-label="Previous">
<span aria-hidden="true" >«</span>
</a>
</li>
<?php for($i=0;$i<$pageCount;$i++): ?>
<li <?php if($page == $i+1): ?> class="active" <?php endif; ?>><a href="/user/index?page=<?= $i+1 ?>"><?=$i+1?></a></li>
<?php endfor; ?>
<li <?php if($page == $pageCount): ?> class="disabled" <?php endif; ?> >
<a <?php if($page == $pageCount): ?> οnclick="return false" <?php endif; ?> href="/user/index?page=<?= $page+1?>" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
<div class="modal fade" id="myModal" data-backdrop="false" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog modal-lg" role="document" >
<div class="modal-content" >
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" onclick="close1()" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">用户新增</h4>
</div>
<div class="modal-body">
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label" >用户名</label>
<div class="layui-input-block">
<input type="hidden" id="id" class="layui-input">
<input type="text" id="username" placeholder="请输入管理员名" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" >邮箱</label>
<div class="layui-input-block">
<input type="text" id="email" placeholder="请输入邮箱地址" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" >手机号码</label>
<div class="layui-input-block">
<input type="text" id="phone" placeholder="请输入手机号码" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" >签名</label>
<div class="layui-input-block">
<input type="text" id="nickname" placeholder="请输入用户昵称" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" >签名</label>
<div class="layui-input-block">
<input type="text" id="sign" placeholder="请输入用户签名" class="layui-input">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" onclick="close1()" data-dismiss="modal">返回</button>
<button type="button" id="ajax_submit" class="btn btn-primary">提交</button>
</div>
</div>
</div>
</div>
<script>
layui.use('layer',function () {
var layer = layui.layer;
$('#ajax_submit').click(function () {
var data = {
'id' : $('#id').val(),
'username' : $('#username').val(),
'phone' : $('#phone').val(),
'email' : $('#email').val(),
'nickname' : $('#nickname').val(),
'sign' : $('#sign').val()
};
$.ajax({
'url':'/user/dell',
'data': data,
'type':'post',
'dataType':'json',
'success':function (res) {
if (res.code == 200){
layer.msg('修改成功!' , {time: 800, icon:6});
} else {
layer.msg('修改失败!' , {time: 800, icon:5});
}
setTimeout(function () {
window.location.reload();
},800)
}
})
})
})
function add(id='',username='',password='',phone='',email='',nickname='',sign=''){
$('#id').val(id);
$('#username').val(username);
$('#phone').val(phone);
$('#email').val(email);
$('#nickname').val(nickname);
$('#sign').val(sign);
layui.use('layer', function(){
var layer = layui.layer;
});
}
</script>
组件publicFunction.php函数
/*
* 通用响应
* @params int code 响应码
* @params string $msg 响应描述
* @params string $data 响应数据
*/
function response($code = 200 , $msg="success" , $data=array()){
$res = array('code'=>$code,'msg'=>$msg,'data'=>$data);
echo json_encode($res);die;
}
/*
* 成功响应
* @params string $data 响应数据
* @params string $msg 响应描述
* @params string $code 响应码
*/
function success($data=array(),$msg="success",$code = 200){
$this->response($code,$msg,$data);
}
/*
* 失败响应
* @params string $code 响应码
* @params string $msg 响应描述
*/
function fail($code = 500 ,$msg="fail"){
$this->response($code,$msg);
}