danieletulone / laravel-base-crud
此包最新版本(dev-master)没有提供许可证信息。
dev-master
2020-08-31 22:33 UTC
Requires
- php: ^7.2.5
Requires (Dev)
- laravel/framework: 7.x.x
This package is auto-updated.
Last update: 2024-09-29 05:36:05 UTC
README
欢迎来到Laravel Crud Controller仓库。
此包的目的是什么?
此包可能提供基本的CRUD操作,并允许您完全自定义控制器。有两个控制器
- CrudController:返回 Illuminate\View\View 类型响应的主要控制器。
- RestCrudController:此控制器扩展了主要控制器,但更改了响应类型:它将返回JSON。
安装
使用composer简单安装。
composer require danieletulone/laravel-base-crud
使用方法
在开始使用控制器之前,您必须为新的模型创建所有资源
php artisan make:model Pizza -a
-a 标志表示 全部:控制器、模型、迁移、播种器和工厂。
基本使用
编辑生成的控制器。
- 扩展 RestCrudController 而不是 Laravel标准控制器。
- (可选)在控制器中将属性 $model 设置为您的模型命名空间。
<?php namespace App\Http\Controllers; use DanieleTulone\BaseCrud\Http\Controllers\CrudController; class PizzaController extends CrudController { // }
- 定义路由,例如,在
routes/web.php
中。
Route::resource('pizzas', 'PizzaController');
- 创建视图遵循此标准
|--- resources
|------ views
|--------- pizzas
|------------ index.blade.php
|------------ show.blade.php
- 默认情况下,CrudController具有存储、索引、显示、更新和删除方法。
如果您想使用创建和编辑方法和视图,必须在控制器中添加 HasFrontForms 特性。
<?php namespace App\Http\Controllers; use DanieleTulone\BaseCrud\Http\Controllers\CrudController; use DanieleTulone\BaseCrud\Traits\HasFrontForms; class PizzaController extends CrudController { use HasFrontForms; }
并在 resources/views/pizzas 中添加
- create.blade.php
- edit.blade.php
现在,在 Pizza 模型中定义规则,创建视图并迁移表。 所有 CRUD 操作都已实现!
基本使用 + 验证
- 遵循基本使用说明。
- 创建一个 FormRequest 并定义规则;
php artisan make:request PizzaRequest
- (可选)将 $formRequest 属性设置为控制器。
高级使用:自定义
主要控制器具有主要操作和默认查询。您可以编辑控制器的完整流程并编辑查询。
自定义查询
每个方法都有自己的查询方法。
- index : indexQuery
- delete: deleteQuery
- show: showQuery
- create: 没有创建方法
- store: storeQuery
- update: updateQuery
因此,在您的控制器中,您可以通过这种方式覆盖方法
class PizzaController extends CrudController { // ... code /** * Query used for index method. * * @param mixed $params * @return mixed */ public function indexQuery(&$params) { $modelsName = Str::plural($this->getModelName()); $this->params[$modelsName] = $this->model::where('price', '>', 15)->paginate(); } // ... code }
自定义操作
每个方法遵循此流程。
- 从 POST、GET 或路由 URL(例如:/pizza/{pizza} -> 在参数中您将拥有 pizza 参数)获取参数。
- 执行(如果存在),名为 before{METHOD_NAME} 的方法。例如:beforeIndex、beforeStore 等。
- 验证请求,如果存在 Validable 特性。
- 调用查询方法。例如:indexQuery、storeQuery 等。
- 执行(如果存在),名为 after{METHOD_NAME} 的方法。例如:beforeIndex、beforeStore 等。
- 返回响应(视图或 JSON)。
因此,您可以在控制器中创建后/前方法来自定义操作。
您可以通过手动实现或未实现接口来创建它们。
有两个接口
- DanieleTulone\BaseCrud\Contracts\AfterActions;
- DanieleTulone\BaseCrud\Contracts\BeforeActions;