MReg 技术介绍

Developing

编程语言与框架

MReg 采用 PHP 进行开发,在 2022 年,PHP 仍然是开发后台类应用的绝佳语言,其优势有:

  • 极高的开发效率;
  • 相较于 Nodejs Python 等脚本语言拥有更高的性能;
  • 拥有 Laravel Admin 这样的后台开发框架;

MReg 还采用了流行的 PHP 框架 Laravel 9 进行开发,并使用 Dcat Admin 在极短的时间内建立起一套高可用的后台管理系统。

Dcat Admin 是一个基于 laravel-admin 二次开发而成的后台系统构建工具,只需很少的代码即可快速构建出一个功能完善的高颜值后台系统。支持页面一键生成 CURD 代码,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的 HTML 代码,对后端开发者非常友好。

—— Dcat Admin 中文文档

可以使用以下的命令更新 Dcat Admin 框架

1
composer update dcat/laravel-admin && php artisan admin:update

详细更新指南请移步官网:https://learnku.com/docs/dcat-admin/2.x/version-upgrade/8209

Admin 控制器

学院、专业、班级选择器

MReg 在 HasFormapp/Admin/Traits/HasForm.php)Trait 内封装了学院、专业、班级选择器,它将使用用户可访问的记录作为可选择项。

你可以在控制器的 form() 方法中便捷地使用它们。

1
2
3
4
5
6
7
8
protected function form()
{
return Form::make(new Major(['college']), function (Form $form) {
// 生成一个学院选择器
$this->collegeSelector($form);
...
});
}

数据库与迁移

MReg 中的所有数据表设计均已以记录在迁移(Migration),你可以在项目中的 database/migrations 文件夹中看到这些迁移。

当将应用部署在一台新的机器中时,你可能会需要在机器中的数据库生成数据表,便可以使用迁移来生成。首先需要在 .env 文件中配置数据库信息,随后使用 Laravel 提供的迁移命令即可生成数据表。

1
php artisan migrate

Eloquent 模型

HasAdmin Trait

App\Models\ModelTraits\HasAdmin 提供了一些用后台用户进行模型访问控制的方法,包括获取可访问的学院 ID,专业 ID,班级 ID 等。

adminAccessible 方法

查询作用域,用于在查询中筛选用户可以访问到的数据条目。其方法体即为模型文件中的 scopeAdminAccessible 方法,具体请查询 Laravel 中关于 Eloquent 查询作用域的介绍。

1
College::adminAccessible()

在 Dcat Admin 控制器中我们就是通过该方法来让用户只能看到自己有权限访问的记录。

1
2
3
4
5
6
7
8
// app/Admin/Controllers/CollegeController.php
protected function grid()
{
return Grid::make(new College(['majors']), function (Grid $grid) {
$grid->model()->adminAccessible();
...
});
}