webbtj / crud
自动为任何模型添加 CRUD 路由和方法。
Requires
- php: ^7.2
- doctrine/dbal: ^2.9
This package is auto-updated.
Last update: 2024-09-29 05:09:32 UTC
README
Laravel Crud 是一个包,用于自动为任何模型快速添加 CRUD(创建、读取、更新、删除)视图、Web 控制器和 API 控制器。
原型设计
Laravel Crud 允许您快速创建执行完整 CRUD 操作集(创建、读取、更新、删除)所需的所有视图和控制器,包括仅通过配置文件即可创建的索引。Laravel Crud 还会自动为您创建并注册路由,使您只需在数组中一行即可获得模型的数据和 API 端点。
Laravel Crud 的目的是快速原型设计。您所需要的只是模型及其对应的数据库表,以完成完整的 CRUD 操作集。属性及其类型将从数据库中读取,并在 Web UI 中渲染相应的 UI 控件。
安装
通过 composer 安装。
composer require webbtj/crud
用法
安装完成后,您需要发布一个配置文件进行编辑。
php artisan vendor:publish
当提示时,选择 crud-config
。这将创建 config/crud.php
,您可以在其中定义要为 crud 功能生成的模型。
配置
您可以在 config/crud.php
配置文件中列出任何要为 crud 功能添加的模型。此文件返回一个数组,数组中的每个元素可以是命名模型的字符串,也可以是包含附加配置选项的数组,例如哪些字段是只读的、排除在特定视图之外的,甚至验证。在指定模型名称时,您可以包含模型的完整命名空间(例如 App\Employee
)或仅包含类名本身(例如 Employee
)。模型名称也是不区分大小写的。
示例配置文件
return [
'models' => [
// Add your model class names here (full namespace)
// Exmaple: "App\\Employee"
"App\\SmallChild", // a string that will create all routing and views
// for the model with all defaults.
[
'model' => "App\\FastCar", // specify the model with extra configs
'index' => [
'exclude' => ['created_at'], // don't show this property in the
// index view
],
'store' => [
'validation' => [ // run this validation on the "store" method
'year' => 'required'
],
],
],
[
'model' => "App\\Employee",
'show' => [
'exclude' => ['sample_text', 'sample_string'],
],
'edit' => [
'exclude' => ['sample_longText'],
'readonly' => ['sample_char'], // in the edit interface, show
// this property but make it
// read only
],
'create' => [
'exclude' => ['sample_text'],
'include' => ['updated_at'], // include this property in the
// create interface (it's normally
// not included)
'readonly' => ['sample_integer'],
],
'index' => [
'include' => [
'id', 'first_name', 'last_name', 'email', 'sample_json',
'sample_jsonb', 'sample_enum', 'sample_set', 'enabled'
],
],
'update' => [
'validation' => [
'first_name' => 'required',
'last_name' => 'required',
],
]
]
]
];
您可以为四个标准视图(show、edit、create、index)中的每个指定属性的 include
、exclude
和 readonly
数组。您还可以为两个标准方法(store 和 update)中的每个指定 include
、exclude
和 validation
数组。如果您以数组格式指定附加选项,则必须包括 model
定义。
默认值
虽然您可以完全控制哪些字段可以显示和编辑,但此包在您未提供具体信息时将回退到默认值。默认情况下...
- 不对任何属性应用验证
id
、created_at
和updated_at
不能通过请求进行更新- 每个视图将显示所有属性
在所有视图(除 index 外),您将 exclude
不想显示的字段。如果您想自定义 index
视图,则需要 include
每个属性。
生产环境
但是,读取每个与模型交互的架构、从配置中读取和解析所有这些包含、排除、只读和验证规则是非常昂贵的操作,并且并不适合生产应用程序。这就是为什么有一个 artisan 命令将视图和控制器提交到 您的 代码库,以提高性能和进一步的开发控制。
php artisan crud:publish
crud:publish
artisan 命令会在你的 views
目录中为模型创建一个目录,包含 index
、show
、create
和 edit
视图。它还会在你的 Http/Controllers
目录中创建一个 Web 控制器,以及在 Http/Controllers/Api
目录中创建一个 API 控制器。最后,它将提供将路由添加到你的 web.php
和 api.php
路由文件中的推荐代码,并建议你现在从 crud.php
配置文件中删除发布模型。
当然,你可以通过选项来自定义和限制这个发布。使用 --model=
来指定你希望发布的模型。省略此选项将发布所有模型。此选项可以通过多次指定来允许多个值(例如:`php artisan crud:publish --model=Employee --model=Car`)。
你还可以通过指定 --type=
来指定你想要发布的元素。像 --model=
一样,这可以重复以指定要发布的多个类型。有效的类型如下:
controller
- 发布 Web 控制器api.controller
- 发布 API 控制器views
- 发布所有视图view.index
- 只发布 index 视图view.show
- 只发布 show 视图view.create
- 只发布 create 视图view.edit
- 只发布 edit 视图
关于这些选项的一些注意事项。它们不区分大小写;所有标点符号都被移除(因此 api.controller
、api-controller
和 apicontroller
都有效);单数与复数无关(仅限英语);特定视图的单词顺序无关(view.index
或 index.view
)。
路线图
- 单元测试
- beta 版本/发布到 Packagist。
贡献
欢迎贡献 GitHub。在提交 PR 之前,请先打开问题,并在你的提交信息/PR 描述中标记问题。另外,尽可能遵循 PSR-2。