Files
hyperf-admin/docs/guide/dev_example.md
2021-04-12 10:05:55 +08:00

120 lines
3.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
我们通过一个具体案例, 来看看如何应用`hyperf-admin`快速实现
### 1.需求描述
实现一个某校年级内各班级学生的各科成绩管理后台, 要求如下
1. 列表显示学生 年级,班级,学习,学科,成绩,时间,性别,年龄
2. 可以按成绩 倒序/正序排列
3. 可以批量导入/导出学生成绩
4. 可以通过 年级,学生名称,班级 等条件筛选
5. 最好列表可以分页签直接显示各科成绩
6. 没有原型图
### 2. 数据库定义
这里不做太复杂的设计, 仅用一张表来完成此需求
```sql
CREATE TABLE `student_score` (
`id` int(12) unsigned NOT NULL AUTO_INCREMENT,
`grade` tinyint(4) unsigned NOT NULL COMMENT '年级',
`class` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '班级',
`subject` tinyint(4) unsigned NOT NULL COMMENT '学科',
`score` int(12) unsigned NOT NULL DEFAULT '0' COMMENT '分数',
`name` varchar(10) NOT NULL DEFAULT '' COMMENT '学生名称',
`sex` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '性别, 0女生, 1男生',
`create_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
接下来在`MySql`中创建表
### 3.功能开发
1. `hyperf`中添加db信息
```php
// config/autoload/databases.php
'local' => db_complete([
'host' => '127.0.0.1',
'database' => 'test',
'username' => 'root',
'password' => 'root'
])
```
2. 通过`DevTools`开发者工具创建 `student_score` 相关的 `Model`, `Controller`
![YPdEli](https://gitee.com/daodao97/asset/raw/master/uPic/YPdEli.png)
选择好相应的表后, 点击提交, 此时工具已经帮我们创建好相应的`app/Controller/StudentScoreController.php`和`app/Model/Test/StudentScore.php`
3. 添加目录和菜单
![cs0SYX](https://gitee.com/daodao97/asset/raw/master/uPic/cs0SYX.png)
注册路由
```php
// config/routes.php
register_route('/student_score', StudentScoreController::class);
```
此时我们也已经完成了基础的`CRUD`开发
![MEoM4p](https://gitee.com/daodao97/asset/raw/master/uPic/MEoM4p.png)
哦对了, 还有各种筛选条件呢? 也很简单, 在 `scaffoldOptions` 中增加 `filter`配置即可
```php
public function scaffoldOptions()
{
return [
'filter' => [
'grade', 'class', 'subject', 'name%',
'score|分数' => [
'type' => 'input-range',
'select_type' => 'between'
]
],
];
}
```
![u68v1D](https://gitee.com/daodao97/asset/raw/master/uPic/u68v1D.png)
还有, 大家别忘了, 需求中还要去可以按页签显示, 改怎么办呢, 这个ui可有点复杂啊, 不过在`hyperf-admin`里也同样简单
`scaffoldOptions` 中增加 `table.tabs`配置即可
```php
public function scaffoldOptions()
{
return [
'table' => [
'tabs' => [
[
'label' => '语文',
'value' => 1,
'icon' => 'el-icon-s-grid',
],
[
'label' => '数学',
'value' => 2,
'icon' => 'el-icon-s-grid',
],
]
],
];
}
```
![Ax0WWD](https://gitee.com/daodao97/asset/raw/master/uPic/Ax0WWD.png)
至此我们已经完成了绝大部分的功能开发, 如果使用熟练, 我们应该能在十分钟内完成整个功能的前后端开发, 而且还支持复杂的前端效果.
?> 当然`hyperf-admin`还支持更多复杂的功能, 快快用你明亮的眼睛去发现他吧.