管理员模块实操

原创 2018-12-20 20:24:53 541
摘要:一.后台主页模板分离    将重复的内容header,提出来,放在public目录,创建header.html中,然后将其导入到所用的模板中index.html add.html edit.html二. 创建数据库,并创建model/User.php对应数据表User 开启自动时间戳 和软删除功能<?php namespace a

一.后台主页模板分离

    将重复的内容header,提出来,放在public目录,创建header.html中,然后将其导入到所用的模板中index.html add.html edit.html

二. 创建数据库,并创建model/User.php对应数据表User 开启自动时间戳 和软删除功能

2.png

<?php

namespace app\admin\model;
use think\Model;
use think\model\concern\SoftDelete;

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

    //表名
    protected $table = 'user';
    //主键
    protected $pk = 'id';

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

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

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

三.查询用户表,并输出在User/index控制器对应的模板中

    * 并运用tp分页类形成分页样式输出到模板中

namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
use app\admin\model\User as UserModel;

class User extends Controller
{
    public function index()
    {
        //分页设置
        $config = [
            'type'=>'bootstrap',
            'var_page'=>'page'
        ];
        //每页显示数量
        $num = 5;

        //是否是简单分页  就只有上一页 和下一页
        $simple = false;
        //按id降序排列,并且每一页设为八条数据
        $users = UserModel::order('id')
            ->paginate($num,$simple,$config);
        //分页
        $page = $users->render();
        //管理员列表
        $this->view->assign('users',$users);
        //分页信息
        $this->view->assign('page',$page);
        //渲染管理员界面
        return $this->view->fetch();
    }

3.png

四.实现新增操作,

    1.点击新增按钮,弹出 {:url(\'User/add\')}页面,进行添加 在User控制器类创建add方法进行实现渲染页面

<label for="username" class="layui-form-label">
        <span class="x-red">*</span>登录名
    </label>
    <div class="layui-input-inline">
        <input type="text" id="username" name="username" required="" lay-verify="required"
               autocomplete="off" class="layui-input">
    </div>
    <div class="layui-form-mid layui-word-aux">
        <span class="x-red">*</span>将会成为您唯一的登入名
    </div>
</div>
<div class="layui-form-item">
    <label for="phone" class="layui-form-label">
        <span class="x-red">*</span>手机
    </label>
    <div class="layui-input-inline">
        <input type="text" id="phone" name="phone" required="" lay-verify="phone"
               autocomplete="off" class="layui-input">
    </div>
    <div class="layui-form-mid layui-word-aux">
        <span class="x-red">*</span>将会成为您唯一的登入名
    </div>
</div>
<div class="layui-form-item">
    <label for="email" class="layui-form-label">
        <span class="x-red">*</span>邮箱
    </label>
    <div class="layui-input-inline">
        <input type="text" id="email" name="email" required="" lay-verify="email"
               autocomplete="off" class="layui-input">
    </div>
    <div class="layui-form-mid layui-word-aux">
        <span class="x-red">*</span>
    </div>
</div>
/************后续几乎一样就不粘贴了太长了**********/

    2. 将add页面表单的数据以post方法异步提交到User控制器的doAdd方法中进行操作  当脚本返回res==1为添加成功,返回对应数据

$.post('{:url("User/doAdd")}',{
    'username':$('#username').val(),
    'phone':$('#phone').val(),
    'email':$('#email').val(),
    'password':$('#password').val(),
},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);
        });
    }
})

    3.doAdd方法具体实现,应用模型类UserModel进行新增操作,

public function doAdd()
{
    //获取前台提交过来的数据
    $data = Request::param();
    $data['password'] = sha1($data['password']);
    //获取要添加的用户名
    $username = $data['username'];
    //查询数据库用户名是否存在
    $res = UserModel::where('username',$username)->find();
    
    if($res == true){
        return ['res'=>0,'msg'=>'用户名已存在!'];
    }
    //添加
    $user = UserModel::create($data);
    if($user == true){
        return ['res' => 1, 'msg' => '添加成功!'];
    }else{
        return ['res' => 0, 'msg' => '添加失败!'];
    }
}

4.png


5.png

五.实现修改操作

    1.点击修改按键,弹出User/edit控制器的模板页面,并传入对应的id {:url(\'User/edit\')}?id={$user.id}  并根据id值来查询对应的数据,传入模板变量在模板的表单中显示

<a title="编辑"  onclick="x_admin_show('编辑','{:url(\'User/edit\')}?id={$user.id}')" href="javascript:;">
    <i class="layui-icon">&#xe642;</i>
</a>
    public function edit()
    {
        $id = Request::param('id');
//        echo $id;
        //获取编辑的信息
        $userInfo = UserModel::get($id);
//        dump($userInfo);
        //模板赋值(查询的信息)
        $this->view->assign('userInfo',$userInfo);

        //渲染编辑界面
        return $this->view->fetch();
    }

    2.点击edit页面中的更新按钮,实现post异步将数据传输到User/doEdit方法中, 要创建一个隐藏表单,将id也传入,方便传入更新条件

$.post('{:url("User/doEdit")}',{
    'username':$('#username').val(),
    'phone':$('#phone').val(),
    'email':$('#email').val(),
    'id':$('#id').val(),
},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);
            // window.location.href="url('User/index')";
        });
    }else{
        layer.alert(data.msg, {icon: 6},function () {
            // 获得frame索引
            var index = parent.layer.getFrameIndex(window.name);
            //关闭当前frame
            parent.layer.close(index);
            // window.location.href="url('User/index')";
        });
    }
})

    3.doEdit中接受post传入的数据,提出id作为更新条件并判断是否存在

    public function doEdit()
    {
        $data = Request::param();
        @$id = $data['id'];
        if($id==''){
            return ['res' => '2', 'msg' => '不允许无条件修改!!'];
        }
        $res = UserModel::update($data,['id'=>$id]);//执行模型类的更新操作
        if($res == true){
            return ['res' => 1, 'msg' => '更新成功'];
        }else{
            return ['res' => 0, 'msg' => '更新失败'];
        }

    }

6.png

六.实现软删除

    * 根据模板中传过来的id值,来进行软删除,无id不允许删除  在model/User.php中开启软删除,并创建对应字段

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

7.png




批改老师:天蓬老师批改时间:2018-12-20 20:39:21
老师总结:这套作业,完成的相当棒, 就应该这样, 相信你做完, 对框架开发又有了自己的认识

发布手记

热门词条