海豚 php 普通联动,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】安装一下

653c6e9eb208b50bc206020d82936721.png

6793a957cc67982528d3a1d232fdd588.png

8e19cbe54e24b1bceef5d94c4f02318e.png

【4】前台/后台

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

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

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

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

0d2173e59884ba0e096d05c8fbfef8d8.png

【5】创建模块

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

ab49fb4816efa9e28ddbe0668369db97.png

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

c827d5136aa42d742e78983ccfff0546.png

67fc02e9f3dfdfc46dd5d0831cd905c0.png

【6】创建控制器

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

0bb6104d071245a0bd58e3cbae0a4d47.png

【7】构建器

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

9605a2ca40ec3106e701c6cfef92cb7b.png

【8】后台创建节点

d944caeb4bb7386e058234e1a54fa738.png

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

4bb252efb9367eb1918f1c8cc4fbd681.png

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

b00a6d0570518501b33bcb712ee95dd4.png

【10】添加学生信息

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

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

【11】学生信息列表

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

【12】编辑学生信息

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

【13】删除学生信息

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

【14】设置用户角色

2895ef41757598bd52d549cbc3510249.png

930188ab75e0469a1d0bd3fedfb67c03.png

【15】授权用户

59b3de28b13552f4dde8fa78fe708caa.png

【16】结束

使用普通用户进行登陆。

【小结】

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

【附件:核心代码】

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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DophinPHP海豚PHP)是一个基于ThinkPHP5.0.3开发的开源PHP快速开发框架,秉承极简、极速、极致的开发理念,为开发集成了基于数据-角色的权限管理机制,集成多种灵活快速构建工具,可方便快速扩展的模块、插件、钩子、数据包。统一了模块、插件、钩子、数据包之间的版本和依赖关系,进一步降低了代码和数据的沉余,以方便开发者快速构建自己的应用。 ZBuilder构建类 DolphinPHP内置了强大的快速构建器,可以帮助开发者快速构建表单页面、数据表格和侧栏,以便让开发者专注于业务逻辑,而不用把过多的精力放在制作各种页面上,今后DolphinPHP将推出更多不同的构建器。 【表单构建】 表单构建器目前内置了多达30几种表单项类型,比如:单行文本、多行文本、百度编辑器、markdown编辑器、单选、多选、开关、联动、取色器、图标选择器、图片裁剪等等,只需几行代码,即可实现复杂且人性化的功能。 【数据表格】 为了让开发者专注于业务本身,DolphinPHP提供了一系列针对构建数据表格的方法,可以帮助开发者快速构建数据表格,集成快速编辑、模糊搜索、字段排序、字段搜索。 【侧栏构建】 DolphinPHP为大家提供了侧栏构建器,方便开发者把一些常用的设置,提示等放置在右侧,增强用户体验。 注意:软件需在php5.5以上的环境中才能正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值