rogerforner / scool_programming
[Projecte DAM] 用于执行不同专业培训周期中专业模块和培训单元的编程包。
Requires
- php: ^7.1.3
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2020-01-22 12:31:33 UTC
README
项目 - 高级应用开发(DAM)培训周期
内容表
信息
编程包 是 高级应用开发(DAM) 培训周期的最终项目,由 伊埃布雷学院(托尔托萨 - 埃布雷斯地区)提供。
这是一个可以在 Programming 仓库中看到的实施包,您还可以在那里找到有关开发项目的更多信息。
相关链接
做什么?
提供必要的 CRUD 以支持部门管理。
- 专业模块。
- 培训单元。
- 培训核心。
- 培训单元。
关系
考虑以下关系
- 用户 - 部门(1,1)
- 用户可能不是部门负责人(0)。
- 用户可能是部门负责人,最多一个(1)。
- 一个部门只能有一个部门负责人(1,1)。
- 用户 - 部门(N,N);[数据透视表]
- 用户可能未分配到部门(0)。
- 用户可以分配到多个部门(N)。
- 部门可能未分配给用户(0)。
- 部门可以分配给多个用户(N)。
- 部门 - 专业模块(1,N)
- 部门可能没有专业模块(0)。
- 部门可以有多个专业模块(N)。
- 专业模块只能分配给一个部门(1)。
- 专业模块 - 培训单元(1,N)
- 专业模块可能没有培训单元(0)。
- 专业模块可以有多个培训单元(N)。
- 培训单元只能分配给一个专业模块(1,1)。
- 培训单元 - 培训核心(1,N)
- 培训单元可能没有培训核心(0)。
- 培训单元可以有多个培训核心(N)。
- 培训核心只能分配给一个培训单元(1,1)。
语言(重要)
模型名称、控制器、方法和变量均使用英文,以及注释块 /** */。
代码中间的注释使用加泰罗尼亚语。
这一点非常重要,因为AJAX请求返回的变量都是英文。.
- 部门 => Departments | Department.
- 专业模块 => Professional modules | Professional module.
- 培训单元 => Training units | Training unit.
- 培训核心 => Curricula | Curricula.
控制器和模型
控制器
namespace Rogerforner\ScoolProgramming\Http\Controllers\API;
所有控制器都是父控制器(扩展)的子控制器,该父控制器用于通过API调试响应。
- ApiResponseController(继承自Controller,Laravel)。
- DepartmentController(继承自ApiResponseController)。
- ProfessionalModuleController(继承自ApiResponseController)。
- TemaryController(继承自ApiResponseController)。
- TrainingUnitController(继承自ApiResponseController)。
模型
namespace Rogerforner\ScoolProgramming\Models;
每个控制器都有自己的模型,该模型具有Laravel的Eloquent关系。
- Department。
- users(): belongsToMany
- 必须将相应的关联添加到Users模型。
- professionalModules(): hasMany
- users(): belongsToMany
- ProfessionalModule。
- department(): belongsTo
- trainingUnits(): hasMany
- Temary。
- trainingUnit(): belongsTo
- TrainingUnit。
- professionalModule(): belongsTo
- temaries(): hasMany
代码文档
代码文档是通过Sami实现的,可以通过以下链接查看:下方的链接或这里。
文档托管在GitHub上,通过GitHub Pages。
Packagist
您可以在Packagist上找到该包,这是Composer的包存储库。
安装
Composer install
执行以下命令将包安装到您的Laravel项目中。
composer require rogerforner/scool_programming
配置
包安装完成后,我们前往config/app.php并在此处将其实例化为Package Service Providers...
/* * Package Service Providers... */ Rogerforner\ScoolProgramming\ScoolProgrammingServiceProvider::class,
实现
实例化包后,我们需要确保迁移被添加到Laravel的相应文件夹中,因为我们只有这样才能执行它们。
供应商
执行以下命令以使其可行。请注意,这些对于包的正常运行是必需的。
php artisan vendor:publish
执行后,会出现providers,我们需要将索引号插入其中。
Which provider or tag's files would you like to publish?:
[0 ] Publish files from all providers and tags listed below
[1 ] Provider: Fideloper\Proxy\TrustedProxyServiceProvider
[2 ] Provider: Illuminate\Mail\MailServiceProvider
[3 ] Provider: Illuminate\Notifications\NotificationServiceProvider
[4 ] Provider: Illuminate\Pagination\PaginationServiceProvider
[5 ] Provider: Laravel\Passport\PassportServiceProvider
[6 ] Provider: Laravel\Tinker\TinkerServiceProvider
[7 ] Provider: Rogerforner\ScoolProgramming\ScoolProgrammingServiceProvider
[8 ] Tag: config
[9 ] Tag: laravel-mail
[10] Tag: laravel-notifications
[11] Tag: laravel-pagination
[12] Tag: migrations
[13] Tag: passport-components
[14] Tag: passport-config
[15] Tag: passport-views
>
在这种情况下,我们可以看到provider已索引在第7号。
迁移
一旦完成“供应商”部分,我们就完成了迁移。
php artisan migrate:fresh
如果创建了种子器(在我们的情况下没有),我们可以执行
php artisan migrate:fresh --seed
API 路由
该包提供了一些路由,通过这些路由我们可以返回包含多个变量的 JSON 响应,这样我们就可以提供定制的消息(错误或成功的消息),以及包含所需对象的各种变量,以便用于每个视图。
在我们的示例案例中(查看“信息”部分),我们使用了 Vue 和 Axios 来消费该包提供的 API。
尽管如此,接下来我们将提供路由,但在那之前,我们提到了用于列出它们的 artisan 命令。
php artisan route:list
部门路由
| | GET|HEAD | api/scool/programming/departments | departments.index | Rogerforner\ScoolProgramming\Http\Controllers\API\DepartmentController@index | auth:api |
| | POST | api/scool/programming/departments | departments.store | Rogerforner\ScoolProgramming\Http\Controllers\API\DepartmentController@store | auth:api |
| | GET|HEAD | api/scool/programming/departments/{department} | departments.show | Rogerforner\ScoolProgramming\Http\Controllers\API\DepartmentController@show | auth:api |
| | PUT|PATCH | api/scool/programming/departments/{department} | departments.update | Rogerforner\ScoolProgramming\Http\Controllers\API\DepartmentController@update | auth:api |
| | DELETE | api/scool/programming/departments/{department} | departments.destroy | Rogerforner\ScoolProgramming\Http\Controllers\API\DepartmentController@destroy | auth:api |
专业模块路由
| | GET|HEAD | api/scool/programming/professional-modules | professional-modules.index | Rogerforner\ScoolProgramming\Http\Controllers\API\ProfessionalModuleController@index | auth:api |
| | POST | api/scool/programming/professional-modules | professional-modules.store | Rogerforner\ScoolProgramming\Http\Controllers\API\ProfessionalModuleController@store | auth:api |
| | GET|HEAD | api/scool/programming/professional-modules/{professional_module} | professional-modules.show | Rogerforner\ScoolProgramming\Http\Controllers\API\ProfessionalModuleController@show | auth:api |
| | PUT|PATCH | api/scool/programming/professional-modules/{professional_module} | professional-modules.update | Rogerforner\ScoolProgramming\Http\Controllers\API\ProfessionalModuleController@update | auth:api |
| | DELETE | api/scool/programming/professional-modules/{professional_module} | professional-modules.destroy | Rogerforner\ScoolProgramming\Http\Controllers\API\ProfessionalModuleController@destroy | auth:api |
主题路由
| | GET|HEAD | api/scool/programming/temaries | temaries.index | Rogerforner\ScoolProgramming\Http\Controllers\API\TemaryController@index | auth:api |
| | POST | api/scool/programming/temaries | temaries.store | Rogerforner\ScoolProgramming\Http\Controllers\API\TemaryController@store | auth:api |
| | DELETE | api/scool/programming/temaries/{temary} | temaries.destroy | Rogerforner\ScoolProgramming\Http\Controllers\API\TemaryController@destroy | auth:api |
| | GET|HEAD | api/scool/programming/temaries/{temary} | temaries.show | Rogerforner\ScoolProgramming\Http\Controllers\API\TemaryController@show | auth:api |
| | PUT|PATCH | api/scool/programming/temaries/{temary} | temaries.update | Rogerforner\ScoolProgramming\Http\Controllers\API\TemaryController@update | auth:api |
培训单元路由
| | GET|HEAD | api/scool/programming/training-units | training-units.index | Rogerforner\ScoolProgramming\Http\Controllers\API\TrainingUnitController@index | auth:api |
| | POST | api/scool/programming/training-units | training-units.store | Rogerforner\ScoolProgramming\Http\Controllers\API\TrainingUnitController@store | auth:api |
| | DELETE | api/scool/programming/training-units/{training_unit} | training-units.destroy | Rogerforner\ScoolProgramming\Http\Controllers\API\TrainingUnitController@destroy | auth:api |
| | PUT|PATCH | api/scool/programming/training-units/{training_unit} | training-units.update | Rogerforner\ScoolProgramming\Http\Controllers\API\TrainingUnitController@update | auth:api |
| | GET|HEAD | api/scool/programming/training-units/{training_unit} | training-units.show | Rogerforner\ScoolProgramming\Http\Controllers\API\TrainingUnitController@show | auth:api |
Vue + Axios(消费路由)
以下提供了一个链接到我们通过这些组件消费 API 的 Vue 组件文件夹。我们可以看到,每个路由/控制器都有一个组件。
- 存储库 CFGS-DAM-Projecte-Programming/resources/assets/js/components/scool-programming/
正如“信息”部分所述,此示例存储库仅用于执行包的功能,每个人都可以自由地开发视图和按自己的意愿消费 API 资源。
谁?
学生
教授们
- 贡萨洛·韦尔热·阿劳诺
- 豪梅·拉莫斯·普拉德斯
- 哈维尔·桑乔·法布雷加特
- 奇克·洛伦特·福尔特斯
- 圣地亚哥·萨巴特·桑兹
- 塞尔吉·图尔·巴登纳斯