zealous-creations / tranquil-model-controller
描述
Requires
- doctrine/dbal: ^3.0
- inertiajs/inertia-laravel: ^0.6
- laravel/framework: ^10.0
- laravel/sanctum: ^3.0
Requires (Dev)
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
- dev-master
- 0.10.35
- 0.10.34
- 0.10.33
- 0.10.32
- 0.10.31
- 0.10.30
- 0.10.29
- 0.10.28
- 0.10.27
- 0.10.26
- 0.10.25
- 0.10.24
- 0.10.23
- 0.10.22
- 0.10.21
- 0.10.20
- 0.10.19
- 0.10.18
- 0.10.17
- 0.10.16
- 0.10.15
- 0.10.14
- 0.10.13
- 0.10.12
- 0.10.11
- 0.10.10
- 0.10.9
- 0.10.8
- 0.10.7
- 0.10.6
- 0.10.5
- 0.10.4
- 0.10.3
- 0.10.2
- 0.10.1
- 0.10.0
- 0.9.11
- 0.9.10
- 0.9.9
- 0.9.8
- 0.9.7
- 0.9.6
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- dev-for-laravel-11
- dev-for-laravel-9
This package is auto-updated.
Last update: 2024-09-09 18:38:54 UTC
README
此包包含基础 Laravel Eloquent 模型和控制器,包含您执行 CRUD 操作所需的所有功能。使 Laravel 开发更具“宁静”体验。
需要 Laravel 10
安装
使用 composer 安装它
composer require zealous-creations/tranquil-model-controller
注意:如果您已安装
inertiajs/inertia-laravel版本低于v0.6或doctrine/dbal版本低于v3.0,则可能需要在要求zealous-creations/tranquil-model-controller之前将其删除
composer remove inertiajs/inertia-laravel composer remove doctrine/dbal composer require zealous-creations/tranquil-model-controller
发布迁移
此包中有 2 个迁移用于创建 users 表和 attachments 表
如果您在运行这些迁移之前想修改这些迁移,请运行以下 artisan 命令
php artisan vendor:publish --tag=tranquil-model-migrations
用法
宁静控制器
宁静控制器负责处理标准 Laravel 控制器的所有方法:index、create、show、edit、store 和 destroy
对于您的任何模型控制器,您只需扩展 TranquilController
class CarController extends TranquilController {}
然后,您只需添加模型的路由资源。
// routes/web.php Route::resource('cars', CarController::class);
现在,所有资源路由的端点都将自动工作,无需在控制器中添加任何方法。
GET|HEAD cars .................. cars.index › CarController@index
POST cars .................. cars.store › CarController@store
GET|HEAD cars/create ......... cars.create › CarController@create
GET|HEAD cars/{car} .............. cars.show › CarController@show
PUT|PATCH cars/{car} .......... cars.update › CarController@update
DELETE cars/{car} ........ cars.destroy › CarController@destroy
GET|HEAD cars/{car}/edit ......... cars.edit › CarController@edit
显示端点示例
GET /cars/1
{
"success": true,
"message": "",
"car": {
"id": 1,
"make": "Audi",
"model": "A3",
"year": 2016
}
}
更新端点示例
PATCH /cars/1 PAYLOAD {"year": 2024}
这将更新具有 id 为 1 的 cars 记录的 year 列 - 只要 year 包含在 $fillable 模型参数中。
或者,如果您有模型扩展 TranquilModel
class Car extends TranquilModel { //... }
存储端点示例
POST /cars PAYLOAD {"make": "Tesla", "model": "Model S", "year": 2024}
这将创建 cars 表中的一条新记录。如果模型扩展 TranquilModel 或使用 HasValidation 特性,则可以进行自动输入验证。
class Car extends Model { use HasValidation; //... }
列表端点
您还可以添加用于获取模型记录列表的 list 路由端点
// routes/web.php Route::post('cars/list', [CarController::class, 'list'])->name('cars.list');
示例
POST /cars/list PAYLOAD {"where": {"make": "Buick"}}
{
"success": true,
"message": "",
"total": 4,
"records": [
{
"id": 108,
"make": "Buick",
"model": "Enclave",
"year": 2016
},
{
"id": 109,
"make": "Buick",
"model": "Encore GX",
"year": 2016
},
{
"id": 110,
"make": "Buick",
"model": "Envision",
"year": 2016
},
{
"id": 111,
"make": "Buick",
"model": "Envista",
"year": 2016
}
]
}
宁静 Inertia 控制器
您可以通过扩展 TranquilInertiaController 来返回所有标准控制器方法对应的 Inertia 响应
class CarController extends TranquilInertiaController {}
现在,所有端点都将返回与对应组件路径对应的 Inertia 响应。
/cars .............. resources/js/Pages/Cars/Index
/cars/create ....... resources/js/Pages/Cars/CreateEdit
/cars/{car} ........ resources/js/Pages/Cars/Show
/cars/{car}/edit ... resources/js/Pages/Cars/CreateEdit
用户模型
此包还包含一个 TranquilUser 模型,用于认证用户。
您可以扩展此模型进行修改
class User extends \Tranquil\Models\TranquilUser { public const roleOptions = [ [ 'handle' => 'super', 'name' => 'Super User', 'description' => 'Has full access', ], [ 'handle' => 'leader', 'name' => 'Leader', 'description' => 'Has administrator access', ], [ 'handle' => 'staff', 'name' => 'Staff', 'description' => 'Has basic access', ], ]; //... }