soysaltan / marygen
使用单行命令生成基于MaryUI的页面
Requires
- illuminate/support: ^10.0|^11.0
- stichoza/google-translate-php: ^5.2
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^9.0|^10.0
README
目录
简介
MaryGen是一个强大的Laravel包,旨在简化生成MaryUI组件和Livewire页面以供Laravel模型使用的过程。它自动创建CRUD(创建、读取、更新、删除)接口,为开发者节省了大量的时间和精力,用于设置管理面板或数据管理系统。
功能
- 自动为Laravel模型生成MaryUI组件
- 创建具有完整CRUD功能的Livewire页面
- 基于数据库模式智能生成表单字段
- 自动生成表列
- 内置排序、分页和搜索功能
- 易于定制的选项
- 自动生成路由
- 对生成内容支持翻译(自0.35.0版起新功能)
要求
- Laravel 10.x或更高版本
- PHP 8.0或更高版本
- MaryUI包
- Livewire Volt包
安装
-
请确保您已设置Laravel项目。
-
安装MaryUI
-
安装Livewire、Livewire Volt包(如果尚未与MaryUI一起安装)
composer require livewire/livewire livewire/volt && php artisan volt:install
-
安装MaryGen包
composer require soysaltan/marygen --dev
-
(可选) 发布配置文件
php artisan vendor:publish --provider="SoysalTan\MaryGen\MaryGenServiceProvider" --tag="config"
配置
发布配置文件后,您可以通过修改 config/marygen.php
来自定义包的行为
return [ 'model_namespace' => 'App\Models', 'use_mg_like_eloquent_directive' => true, ];
model_namespace
: 定义您的模型命名空间。默认为App\Models
。use_mg_like_eloquent_directive
: 确定是否使用MgLike Eloquent指令进行搜索功能。例如
$q->mgLike(['id', 'username', 'email', 'password', 'name', 'lastname', 'title', 'phone', 'avatar', 'time_zone', 'last_login_at', 'status', 'created_at', 'updated_at'], $this->search))
用法
要为模型生成MaryUI组件和Livewire页面,请使用以下命令
php artisan marygen:make {--m|model=} {--w|view=} {--d|dest_lang=} {--s|source_lang=} {--nr|no-route}
--m|model
: 您希望生成组件的模型的名称。--w|view
: (可选) 视图文件的名称。如果没有提供,则使用小写模型名称。--d|dest_lang
: (如果存在源_lang,则必需) 翻译的目的语言代码。--s|source_lang
: (可选) 翻译的源语言代码。如果不存在,则自动检测源语言。--nr|no-route
: (可选 - 自v0.35.2
版起) 阻止将自动路由添加到routes/web.php。
示例
php artisan marygen:make --model=User --view=admin-users --dest_lang=es --no-route
此命令将为User模型生成具有CRUD功能的Livewire页面,将视图文件命名为admin-users.blade.php
,并将内容从英语翻译成西班牙语,并跳过自动路由生成。
防止自动路由生成(自v0.35.2
版起)
从版本0.35.2
开始,MaryGen阻止自动路由生成功能。默认情况下,当您使用不带--no-route选项的marygen:make
命令生成新组件时,将自动将相应的路由添加到您的routes/web.php
文件。
自定义
您可以通过修改以下方法来自定义生成的组件
getMaryUIComponent()
: 调整数据库列类型与MaryUI组件之间的映射。getIconForColumn()
: 修改表单字段的图标选择。generateLivewirePage()
: 自定义生成的Livewire组件和Blade视图的结构。
此外,您可以直接编辑生成的文件,以进一步满足您的特定需求。
翻译功能
MaryGen 包含一个翻译功能,允许您生成不同语言的内容。此功能使用 Google Translate API 来翻译生成的组件中的字段名称、标签和其他文本元素。它使用 stichoza/google-translate-php
包。(https://github.com/Stichoza/google-translate-php) 要使用翻译功能
- 在运行
marygen:make
命令时,使用--dest_lang
选项指定目标语言。 - 可选地,使用
--source_lang
选项指定源语言。如果未提供,Google Translate 将尝试自动检测源语言。
示例
php artisan marygen:make --model=Product --view=product-management --dest_lang=fr --source_lang=en
此命令将为产品模型生成组件,并将内容从英语翻译成法语。
注意:翻译功能需要活跃的互联网连接来与 Google Translate API 通信。
故障排除
常见问题和解决方案
-
MaryUI 包未找到:
- 错误:
MaryUI 包未找到!请使用以下命令安装:'composer req robsontenorio/mary'
- 解决方案:运行
composer require robsontenorio/mary
安装 MaryUI 包。
- 错误:
-
Livewire Volt 包未找到:
- 错误:
Livewire Volt 包未找到!请参阅文档:'https://livewire.laravel.net.cn/docs/volt#installation'
- 解决方案:使用以下命令安装 Livewire Volt:
composer require livewire/livewire livewire/volt && php artisan volt:install
。
- 错误:
-
模型未找到:
- 错误:
模型 {modelName} 不存在!
- 解决方案:确保指定的模型存在于您的模型命名空间中(默认:
App\Models
)。
- 错误:
-
视图文件已存在:
- 错误:
文件 {viewName}.blade.php 已存在!
- 解决方案:为您的视图选择不同的名称,或者如果您想覆盖现有文件,请手动删除现有文件。
- 错误:
-
翻译错误:
- 错误:各种 Google Translate API 错误
- 解决方案:确保您有活跃的互联网连接,并且您使用的语言代码是有效的。请检查 Google Translate 文档以获取支持的语种代码。
-
路由生成问题:
- 问题:不希望的路由被添加到 routes/web.php
- 解决方案:在运行 marygen:make 命令时使用 --no-route 选项以防止自动生成路由。
贡献
欢迎为 MaryGen 贡献!以下是您可以如何贡献
- 叉取存储库
- 为您的功能或错误修复创建一个新分支
- 编写您的代码和测试
- 提交带有您更改清晰描述的拉取请求
请确保您的代码遵循现有的样式约定,并包含适当的测试。
许可证
MaryGen 是 MIT 许可下的开源软件。
支持
有关更多信息或支持
- 在 GitHub 存储库 上打开一个问题
- 通过存储库的联系方式联系包维护者
有关最新更新和有关 MaryUI 的更详细信息,请访问 官方 MaryUI 文档。