DolphinPHP海豚PHP-实现后台学生信息管理系统

前几天第一次听说这个框架,也是机缘巧合下,我使用这个框架实现学生信息管理系统,确实在界面实现上很方便,因为它有强大的构建器,可以快速渲染出表格,表单等。框架的话,多看官方文档好一些,我这里也就是记录一下使用这个框架的情况,可能每个人不一样。

 【1】我的开发环境

在win10下使用phpstudy2018,PHP5.6以上的版本,才可以支持DolphinPHP1.4(海豚PHP)的框架。其中

默认phpstudy2018安装后mysql的账号密码都是root。而DophinPHP是一个基于ThinkPHP5.1.34LTS开发的一套开源PHP快速开发框架。

【2】下载源码

http://www.dolphinphp.com/download/

进入官网下载就可以了

【3】安装一下

DolphinPHP海豚PHP-实现后台学生信息管理系统_第1张图片

DolphinPHP海豚PHP-实现后台学生信息管理系统_第2张图片

DolphinPHP海豚PHP-实现后台学生信息管理系统_第3张图片

【4】前台/后台

前台:http://localhost/student/public/index.php

后台:http://localhost/student/public/admin.php/user/publics/signin.html

默认后台账号/密码admin / admin

可以进后台都点点看看,适应一下这个系统管理。

DolphinPHP海豚PHP-实现后台学生信息管理系统_第4张图片

 【5】创建模块

在application目录下创建自己的模块,我这里做的是学生信息管理界面,就以student命名,然后再student文件夹下创建一个info.php文件。大概就是下面的内容 。

DolphinPHP海豚PHP-实现后台学生信息管理系统_第5张图片

打开后台-系统->扩展中心->模块管理,点击“安装”进入模块安装页面,安装一下。

DolphinPHP海豚PHP-实现后台学生信息管理系统_第6张图片

DolphinPHP海豚PHP-实现后台学生信息管理系统_第7张图片

 

【6】创建控制器

这个我弄的主要是后台管理,所以在student文件夹下创建一个admin用来放置后台控制器。

DolphinPHP海豚PHP-实现后台学生信息管理系统_第8张图片

【7】构建器

DolphinPHP内置了强大的快速构建器,可以帮助开发者快速构建表单页面、数据表格和侧栏,方便快捷。

DolphinPHP海豚PHP-实现后台学生信息管理系统_第9张图片

【8】后台创建节点

DolphinPHP海豚PHP-实现后台学生信息管理系统_第10张图片

但是目前还不能直接点击进入,会显示""无任何节点权限"需要创建子节点。 直接可以生成一个界面。

DolphinPHP海豚PHP-实现后台学生信息管理系统_第11张图片

【9】数据库

我是利用phpmyadmin在项目的数据库下直接创建学生表,和省市县的表。因为我要存储学生的地理位置。

DROP TABLE IF EXISTS `dp_student_info`;
CREATE TABLE `dp_student_info` (
  `id`       int(11) unsigned NOT NULL primary key auto_increment comment 'id',
  `name`     varchar(60) NOT NULL DEFAULT '' COMMENT '姓名',
  `sex`      tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '性别:0-女,1-男,2-保密',
  `age`      tinyint(11) unsigned NOT NULL DEFAULT '0' COMMENT '年龄',
  `birthday` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '生日',
  `school`   varchar(60) NOT NULL DEFAULT '' COMMENT '学校',
  `province` varchar(36) NOT NULL DEFAULT '' COMMENT '省',
  `city`     varchar(36) NOT NULL DEFAULT '' COMMENT '市',
  `county`   varchar(36) NOT NULL DEFAULT '' COMMENT '县',
  `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间'
) ENGINE=INNODB  DEFAULT CHARSET=utf8 COMMENT='学生信息表';
DROP TABLE IF EXISTS `dp_address`;
CREATE TABLE `dp_address` (
  `id`  int(11) unsigned NOT NULL primary key auto_increment comment 'id',
  `pid` int(11) DEFAULT NULL COMMENT '父级',
  `name`varchar(255)  DEFAULT NULL COMMENT '县',
  `type` tinyint(2) DEFAULT NULL COMMENT '0国家/1省/2市/3县'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='中国省市县';

 

DolphinPHP海豚PHP-实现后台学生信息管理系统_第12张图片

 

【10】添加学生信息

主要做这几点,实现方法,创建节点,使用表单构建器,实现三级联动,接收验证数据,提交保存,返回json信息。

其中三级联动这里我花费的时间比较多,实际上还是多看官方文档,去理解如何使用,明白参数的含义才是最重要的。

【11】学生信息列表

主要做这几点,实现方法,创建节点,使用表格构建器,设置按钮,设置表格数据,进行分页,按钮位置,搜索查询。

【12】编辑学生信息

主要做这几点,实现方法,根据学生id获取原本数据,使用表单构建器,三级联动默认数据,接收数据,进行保存,返回json信息。

【13】删除学生信息

主要做这几点,实现方法,根据学生id进行删除操作,返回json信息。

【14】设置用户角色

DolphinPHP海豚PHP-实现后台学生信息管理系统_第13张图片

DolphinPHP海豚PHP-实现后台学生信息管理系统_第14张图片

【15】授权用户

DolphinPHP海豚PHP-实现后台学生信息管理系统_第15张图片

【16】结束

使用普通用户进行登陆。

 

【小结】

         使用框架的话多看官方的文档,先学会模仿使用,理解其中的含义,再去实现自己想要的功能。实在不会的可以多bing一下,或者问一些群里的大佬,不过还是要首先明白自己的问题出现在哪里,不然你怎么问,怎么搜索都不会。

【附件:核心代码】

getMap();//获取搜索框的值
        // 读取用户数据
        $data_list = Db::name('student_info')->where($map)->paginate();
        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
        ->setPageTitle('学生信息列表')
        ->addColumns([ // 批量添加列
            ['id', 'ID'],
            ['name', '姓名'],
            ['sex','性别 ',['0'=>'女','1'=>'男','2'=>'保密'] ],
            ['age', '年龄'],
            ['school', '学校'],
            ['province', '省'],
            ['city', '市'],
            ['county', '县'],
            ['create_time', '创建时间', 'datetime'],
            ['update_time', '修改时间', 'datetime'],
        ])
        ->addColumn('right_button', '操作', 'btn')
        ->addRightButton('edit',['href' => url('edit', ['id' => '__id__'])], ['skin' => 'layui-layer-lan'])
        ->addRightButton('delete',['href' => url('delete', ['id' => '__id__'])])
        ->addTopButton('add', [], ['skin' => 'layui-layer-lan'])
        ->setRowList($data_list)
        ->setColumnWidth([
            'id'  => 50,
            'name' => 80,
            'sex' => 50,
            'age' => 50,
            'age' => 50,
            'school' => 100
        ])
        ->setSearchArea([
            ['text', 'name', '姓名', 'like'],
        ])
        ->fetch();
    }

    /**
     * 添加学生信息
     */
    public function add()
    {
        // 使用ZBuilder构建表单页面,并将页面标题设置为“添加”
        $list_province =  Db::name('address')->where('pid',1)->column('id,name');

        return ZBuilder::make('form')
            ->setPageTitle('添加学生基本信息')
            ->addText('name', '姓名')
            ->addRadio('sex', '性别', '', ['0' => '女', '1' => '男', '2' => '保密'],'2')
            ->addDate('birthday', '生日', '', '', 'yyyy-mm-dd')
            ->addText('school', '学校')
            ->addLinkage('province', '省', '', $list_province, '', url('get_city'), 'city,county')
            ->addLinkage('city', '市', '', '', '', url('get_county'), 'county')
            ->addSelect('county', '县')
            ->setUrl(url('save'))
            ->fetch();
    }

    /**
     * 保存 添加的信息
     */
    public function save()
    {
        if(request()->isPost()){
            $post = request()->post();
            $data['name'] = $post['name'];
            $data['sex'] = $post['sex'];
            $data['school'] = $post['school'];
            $data['birthday'] = strtotime($post['birthday']);
            $data['age'] = date('Y',time())-date('Y',$data['birthday']);
            $data['province'] = $this->get_where($post['province']);
            $data['city']     = $this->get_where($post['city']);
            $data['county']   = $this->get_where($post['county']);
            $data['create_time']=time();
            $data['update_time']=time();

            $res = Db::name('student_info')->insert($data);
            $arr['code'] = '1'; //判断状态
            $arr['msg'] = '请求成功'; //回传信息
            $arr['list'] = $res;
            return $arr;
        }
    }

     /**
     * 编辑页面
     */

    public function edit($id='')
    {
        if(empty($id)){
            return ZBuilder::make('form')->assign('empty_tips', '请指定修改对象')->hideBtn(['submit', 'back'])->fetch();
        }
        $data = Db::name('student_info')->find($id);//获取编辑的数据

        $list_province =  Db::name('address')->where('pid',1)->column('id,name');//省份
        //选出来省id
        $pid  =  Db::name('address')->where('name', $data['province'])->find()['id'];
        $list_city = Db::name('address')->where('pid',$pid)->column('id,name');

        //选出来市id
        $pid  =  Db::name('address')->where('name', $data['city'])->find()['id'];
        $list_county = Db::name('address')->where('pid',$pid)->column('id,name');

        //这里需要知道每个人的地点的id,才可以在编辑的时候显示出来
        $data['province'] = Db::name('address')->where('name', $data['province'])->find()['id'];
        $data['city'] = Db::name('address')->where('name', $data['city'])->find()['id'];;
        $data['county'] = Db::name('address')->where('name', $data['county'])->find()['id'];;
        return ZBuilder::make('form')
        ->setPageTitle('修改学生基本信息')
        ->addText('name', '姓名')
        ->addRadio('sex', '性别', '', ['0' => '女', '1' => '男', '2' => '保密'],'2')
        ->addDate('birthday', '生日', '', '', 'yyyy-mm-dd')
        ->addText('school', '学校')
        ->addLinkage('province', '省', '',$list_province, '', url('get_city'), 'city,county')
        ->addLinkage('city', '市', '', $list_city,'', url('get_county'), 'county')
        ->addSelect('county', '县','',$list_county)
        ->setFormData($data)
        ->setUrl(url('editSave', ['id' =>$id]))
        ->fetch();
    }


      /**
     * 修改保存
     */
    public function editSave(){
        $post = request()->post();
        $data['id'] = request()->param('id');
        $data['name'] = $post['name'];
        $data['sex'] = $post['sex'];
        $data['school'] = $post['school'];
        $data['birthday'] = strtotime($post['birthday']);
        $data['age'] = date('Y',time())-date('Y',$data['birthday']);
        $data['province'] = $this->get_where($post['province']);
        $data['city']     = $this->get_where($post['city']);
        $data['county']   = $this->get_where($post['county']);
        $data['update_time']=time();

        $res = Db::table('dp_student_info')->update($data);
        $arr['code'] = '1'; //判断状态
        $arr['msg'] = '请求成功'; //回传信息
        $arr['list'] = $res;
        return $arr;
    }
    
     /**
     * 删除信息
     *      $id 某个学生id
     */
    public function delete($id='')
    {
        $res = Db::name('student_info')->delete($id);
        if($res){
            $arr['code'] = '1'; //判断状态
            $arr['msg'] = '请求成功'; //回传信息
            $arr['list'] = $res;
        }else{
            $arr['code'] = '404'; //判断状态
            $arr['msg'] = '请求失败'; //回传信息
            $arr['list'] = $res;
        }
        return json($arr);
    }

     /**
     * 获取地点
     */
    public function get_where($id){
        $data = Db::name('address')->find($id);
        return $data['name'];
    }

    /**
     * 获取市 二维数组
     */
    public function get_city($province = '')
    {
        $data = Db::name('address')->where('pid',$province)->field(['id'=>'key','name'=>'value'])->select();
        $arr['code'] = '1'; //判断状态
        $arr['msg'] = '请求成功'; //回传信息
        $arr['list'] = $data;
        return json($arr);
    }

    /**
     *获取县 二维数组
     */
    public function get_county($city = '')
    {
        $data = Db::name('address')->where('pid',$city)->field(['id'=>'key','name'=>'value'])->select();
        $arr['code'] = '1'; //判断状态
        $arr['msg'] = '请求成功'; //回传信息
        $arr['list'] = $data;
        return json($arr);
    }



}

 

你可能感兴趣的:(PHP框架)