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】安装一下

【4】前台/后台

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

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

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

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

 【5】创建模块

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

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

 

【6】创建控制器

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

【7】构建器

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

【8】后台创建节点

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

【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='中国省市县';

 

 

【10】添加学生信息

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

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

【11】学生信息列表

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

【12】编辑学生信息

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

【13】删除学生信息

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

【14】设置用户角色

【15】授权用户

【16】结束

使用普通用户进行登陆。

 

【小结】

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

【附件:核心代码】

<?php
namespace app\student\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use think\Db;

/**
 * student 后台控制器
 */
class Index extends Admin
{
    /**
     * 列表页
     */
    public function index()
    {
        $map = $this->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);
    }



}

 

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
DophinPHP(海豚PHP)是一个基于ThinkPHP5.0.3开发的开源PHP快速开发框架,秉承极简、极速、极致的开发理念,为开发集成了基于数据-角色的权限管理机制,集成多种灵活快速构建工具,可方便快速扩展的模块、插件、钩子、数据包。统一了模块、插件、钩子、数据包之间的版本和依赖关系,进一步降低了代码和数据的沉余,以方便开发者快速构建自己的应用。 ZBuilder构建类 DolphinPHP内置了强大的快速构建器,可以帮助开发者快速构建表单页面、数据表格和侧栏,以便让开发者专注于业务逻辑,而不用把过多的精力放在制作各种页面上,今后DolphinPHP将推出更多不同的构建器。 【表单构建】 表单构建器目前内置了多达30几种表单项类型,比如:单行文本、多行文本、百度编辑器、markdown编辑器、单选、多选、开关、联动、取色器、图标选择器、图片裁剪等等,只需几行代码,即可实现复杂且人性化的功能。 【数据表格】 为了让开发者专注于业务本身,DolphinPHP提供了一系列针对构建数据表格的方法,可以帮助开发者快速构建数据表格,集成快速编辑、模糊搜索、字段排序、字段搜索。 【侧栏构建】 DolphinPHP为大家提供了侧栏构建器,方便开发者把一些常用的设置,提示等放置在右侧,增强用户体验。 注意:软件需在php5.5以上的环境中才能正常运行。 DolphinPHP快速开发框架 更新日志: v1.0.2 更新 修复:一处单词拼写错误 修复:检查新版本时,普通用户会报节点不存在的问题 (感谢网友:天天 的反馈) 修复:发送ajax时,有时候会报“未定义变量:_top_menus”或者“未定义变量:_location”的问题 修复:某些情况下,找不到模板的问题 修复:表格构建器中,如果数据没有主键时会报错的问题 修复:单文件上传、多文件上传、单图片上传、多图片上传在触发器中切换会报错的问题 改进:快速联动支持简单布局 改进:安装框架不再检查是否有mysql密码 改进:登录后台默认不启用验证码 改进:框架安装完毕,显示默认管理员账号和密码 改进:后台配置模型的getConfig方法不采用静态方式 改进:框架安装模块中,url使用兼容模式,以免未启用pathinfo时无法安装的问题 新增:支持在添加表单项时设置布局参数(表单布局) 新增:表单的addBtn方法支持重复调用(添加按钮) 新增:表单新增addButton方法,可以在表单内添加自定义按钮(按钮) 新增:数据授权页面,增加全选和反选功能 新增:表格每列增加一个class名,名称为“column-列名”,方便用css设置列样式(添加一列) 新增:在表格构建器中,可以使用“__字段名__”来获取原数据,要注意使用顺序 新增:cms模块的导航演示
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值