danieletulone/laravel-base-crud

此包最新版本(dev-master)没有提供许可证信息。

dev-master 2020-08-31 22:33 UTC

This package is auto-updated.

Last update: 2024-09-29 05:36:05 UTC


README

欢迎来到Laravel Crud Controller仓库。

此包的目的是什么?

此包可能提供基本的CRUD操作,并允许您完全自定义控制器。有两个控制器

  1. CrudController:返回 Illuminate\View\View 类型响应的主要控制器。
  2. RestCrudController:此控制器扩展了主要控制器,但更改了响应类型:它将返回JSON。

安装

使用composer简单安装。

  composer require danieletulone/laravel-base-crud

使用方法

在开始使用控制器之前,您必须为新的模型创建所有资源

php artisan make:model Pizza -a

-a 标志表示 全部:控制器、模型、迁移、播种器和工厂。

基本使用

编辑生成的控制器。

  1. 扩展 RestCrudController 而不是 Laravel标准控制器。
  2. (可选)在控制器中将属性 $model 设置为您的模型命名空间。
<?php

namespace App\Http\Controllers;

use DanieleTulone\BaseCrud\Http\Controllers\CrudController;

class PizzaController extends CrudController
{
   //
}
  1. 定义路由,例如,在 routes/web.php 中。
Route::resource('pizzas', 'PizzaController');
  1. 创建视图遵循此标准
|--- resources
|------ views
|--------- pizzas
|------------ index.blade.php
|------------ show.blade.php
  1. 默认情况下,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 操作都已实现!

基本使用 + 验证

  1. 遵循基本使用说明。
  2. 创建一个 FormRequest 并定义规则;
php artisan make:request PizzaRequest
  1. (可选)将 $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
}

自定义操作

每个方法遵循此流程。

  1. 从 POST、GET 或路由 URL(例如:/pizza/{pizza} -> 在参数中您将拥有 pizza 参数)获取参数。
  2. 执行(如果存在),名为 before{METHOD_NAME} 的方法。例如:beforeIndex、beforeStore 等。
  3. 验证请求,如果存在 Validable 特性。
  4. 调用查询方法。例如:indexQuery、storeQuery 等。
  5. 执行(如果存在),名为 after{METHOD_NAME} 的方法。例如:beforeIndex、beforeStore 等。
  6. 返回响应(视图或 JSON)。

因此,您可以在控制器中创建后/前方法来自定义操作。
您可以通过手动实现或未实现接口来创建它们。
有两个接口

  • DanieleTulone\BaseCrud\Contracts\AfterActions;
  • DanieleTulone\BaseCrud\Contracts\BeforeActions;