trd-rdm / make-unit-command
一个Laravel命令,帮助项目团队成员轻松创建路由的项目文件。
Requires
- php: >=7.1.3
README
用法
php artisan make:unit User // 範例1 php artisan make:unit Users/Admin // 範例2
简介
一个Laravel单元make命令,可能帮助项目团队成员快速创建资源路由所需的文件。
1. 安装步骤
(1) 安装
打开命令提示符,在项目根目录路径下输入 composer require trd-rdm/make-unit-command --dev
,确认安装成功后
(2) 注册 Service Provider
在项目根目录下找到 app/Providers/AppServiceProvider.php,找到 register() 函数。在函数中,仅当在本地端 (当APP_ENV = local) 时注册 UnitCommandServiceProvider,添加如下内容(斜体粗体部分)
public function register() { if($this->app->isLocal()) { $this->app->register( \RDM\MakeUnitCommand\UnitCommandServiceProvider::class); } }
说明:仅在本地端注册,以避免在 Google Cloud Platform 上构建机器时,由于无法连接到私有的GitLab仓库而导致构建过程出错。同时,在构建机器时建议使用 "composer install --no-dev" 安装,跳过安装 require-dev 中的开发阶段的包,以避免构建失败。
(3) 将套件文档复制到项目中
打开命令提示符,在项目根目录路径下输入 php artisan vendor:publish --tag=generator --force,将必要文件复制到项目中,如果没有显示错误,表示安装完成。不要忘记将这些文件 git add,push 到 server 上,让项目成员可以使用。
2. 使用说明
(1) 指令
用法类似于 Laravel 内置的 make:controller 指令。
打开命令提示符,在项目根目录路径下输入,在项目根目录下输入 php artisan make:unit Folder/User,表示在 Folder 文件夹下建立相关文件。
上述指令会
(1) 在 app/Http/Folder/Controller/User 下建立 Controller.php, Transform.php, Form.php
(2) 在 App/Management/Folder/User 下建立 Service.php, SearchService.php, Repository.php, Entity.php
(3) 在 api.php 下新增默认的资源路由如下
// TODO: 檢查 User 建立 Routes URI 是否正確 Route::get('user', 'Folder\User\Controller@index'); Route::post('user', 'Folder\User\Controller@store'); Route::put('user/{user}', 'Folder\User\Controller@update'); Route::delete('user/{user}', 'Folder\User\Controller@destroy');
- 特别注意的是程序会自动检测重复的 URI 格式的 route 不会建立,例如若是 api.php 中已经有 Route::put('user/{id}, ...),为了避免路由覆盖的问题,Route::put('user/{user}', 'User\Controller@update') 将不会建立。
(2) 启用/停用建立文件
如果不希望在 api.php 下自动新增 resource routes,可以到 config/generator.php 下找到 **'route' 将 enable 改为 false**。同样,你也可以禁用 controller, entity 或是 search 文件的建立。
3. 更新步骤
指令
- composer update rdm/make-unit-command
- 在项目根目录路径下输入 php artisan vendor:publish --tag=generator --force 覆盖旧文件
- 将所有更改 git push
v1.1.0
2019-10-14
新增
- 在 controller 添加 transformer 以及 Search 类别的声明
- 添加检查输入参数首字母是否为大写的功能,若是小写会询问。
修改
- 修正 command help 描述
- 修改 shell 输出消息颜色
v1.1.1
2019-12-30
新增
- 添加 Form::attributes() 以让程序人员可以自定义验证错误消息中的验证字段名称
修改
- 修正改 Form::authorize() 中示例调用的权限函数配合新版 Basic_Project 从 BaseForm::permission(tag, value) 改成 BaseForm::can(value, tag) 以增加程序可读性
并且 BaseForm::can() 支持闭包格式的调用
v1.1.2
2020-04-09
修改
- 修正 MAC / Linux 环境下不支持反斜杠路径导致的创建文件问题
v1.1.5
2022-01-10
修改
- 修正替换 Laravel 8 已弃用的 Str 辅助函数
Form 示例程序
Form.php
格式自由填写
<?php use App\Rules\PositiveKey; public function authorize(): bool { switch ($this->method_name) { case "index": return $this->can('search', 'permission'); case "update": return $this->can(['create', 'update'], 'permission'); case "review": return $this->can(function($request) {...}); } } public function rules(): array { switch ($this->method_name) { case "store": $rules = [ "name" => 'required|string|min:1|max:45|unique:roles,name,NULL,id,deleted_at,NULL,portal,'.portal(), "permission" => ['present','array', new PositiveKey] ] } return $rules; } public fuction attributes(): array { $all = ['name' => '帳號名稱']; switch ($this->method_name) { case "store": $alias = ['permission' => '權限值']; } return array_merge($all, $alias); } ?>