brnbio / laravel-crud
自定义代码生成器
1.1.1
2023-12-24 07:56 UTC
README
此库帮助生成Laravel项目的代码。
安装
composer require --dev brnbio/laravel-crud
如果您想使用自己的模板,请确保将占位符发布到您的应用程序中。
php artisan stub:publish
可宏化
如果您想添加自己的替换项,可以轻松更新替换项。所有基本替换、命令参数和选项都可用。
// AppServiceProvider.php GenerateRequestCommand::macro('updateReplace', function (array $replace, array $arguments, array $options) { return array_merge($replace, [ // your replacements ]); });
基本替换
{{ namespace }}
- 生成类的命名空间{{ rootNamespace }}
- 基础命名空间{{ class }}
- 类名{{ namespacedModel }}
- 命名空间模型类{{ model }}
- 模型名称{{ modelVariable }}
- 模型变量名称{{ modelVariablePlural }}
- 模型复数变量名称
// e.g. for a Team model $replace = [ 'namespace' => 'App\Models', 'rootNamespace' => 'App', 'class' => 'Team', 'namespacedModel' => 'App\Models\Team', 'model' => 'Team', 'modelVariable' => 'team', 'modelVariablePlural' => 'teams', ];
用法
为模型Team
生成一切:模型、控制器、视图、请求和迁移。
php artisan generate --table=teams --attributes=name:string Team
如果您想手动操作,可以使用基本命令来生成。
生成模型
对于请求,除了基本替换外,还提供了以下替换:
{{ table }}
- 表名(如果设置了选项){{ attributes }}
- 属性常量列表{{ fillable }}
- 可填充属性列表{{ properties }}
- 基于属性的属性列表(用于文档块)
php artisan generate:model --table teams --attributes=name:string Team
// generated fields /** * Class Team * * @package App\Models * @property string $name */ class Team extends Model { public const TABLE = 'teams'; public const ATTRIBUTE_NAME = 'name'; /** * @var string[] */ protected $fillable = [ self::ATTRIBUTE_NAME, ]; }
生成迁移
对于请求,除了基本替换外,还提供了以下替换:
{{ fields }}
- 基于属性的表字段列表
php artisan generate:migration --create teams --attributes=name:string CreateTeamsTable
// generated fields Schema::create('teams', function (Blueprint $table) { // ... $table->string('name'); // ... });
生成控制器
对于请求,除了基本替换外,还提供了以下替换:
{{ storeRequest }}
- 存储请求类{{ namespacedStoreRequest }}
- 命名空间存储请求类{{ updateRequest }}
- 更新请求类{{ namespacedUpdateRequest }}
- 命名空间更新请求类
php artisan generate:controller --model=Team --type=create Teams/CreateController
// generated controller class CreateController extends Controller { /** * @return Response */ public function __invoke(): Response { return inertia('teams/create'); } /** * @param StoreRequest $request * @return RedirectResponse */ public function store(StoreRequest $request): RedirectResponse { $team = Team::create($request->validated()); return to_route('teams.details', compact('team')); } }
生成视图
php artisan generate:view --model Team --type create teams/create
// generated view <script setup> import { useForm } from '@inertiajs/inertia-vue3'; import { provide } from 'vue'; const form = useForm({ // }); provide('form'); function submit() { form.submit(route('teams.create')); } </script> <template> <form @submit.prevent="submit"> // ... <button :disabled="form.processing"> Submit </button> </form> </template>
生成请求
对于请求,除了基本替换外,还提供了以下替换:
{{ rules }}
- 基于属性的规则列表
php artisan generate:request --model Team --attributes=name:string Teams/StoreRequest
// generated rules public function rules(): array { return [ Team::ATTRIBUTE_NAME => [ 'required', 'string', 'max:255', ], ]; }