rogerforner/scool_programming

此包已被废弃,不再维护。未建议替代包。

[Projecte DAM] 用于执行不同专业培训周期中专业模块和培训单元的编程包。

dev-master 2019-02-22 09:58 UTC

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
  • 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 响应,这样我们就可以提供定制的消息(错误或成功的消息),以及包含所需对象的各种变量,以便用于每个视图。

在我们的示例案例中(查看“信息”部分),我们使用了 VueAxios 来消费该包提供的 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 组件文件夹。我们可以看到,每个路由/控制器都有一个组件。

正如“信息”部分所述,此示例存储库仅用于执行包的功能,每个人都可以自由地开发视图和按自己的意愿消费 API 资源。

谁?

学生

教授们

  • 贡萨洛·韦尔热·阿劳诺
  • 豪梅·拉莫斯·普拉德斯
  • 哈维尔·桑乔·法布雷加特
  • 奇克·洛伦特·福尔特斯
  • 圣地亚哥·萨巴特·桑兹
  • 塞尔吉·图尔·巴登纳斯