carlosafonso/laravel-crud

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

在 Laravel 框架之上提供的便捷层,用于开发 CRUD 应用程序

1.0.0 2016-05-08 17:28 UTC

This package is auto-updated.

Last update: 2024-08-29 04:14:26 UTC


README

Build Status Code Climate Test Coverage

在 Laravel 框架之上提供的便捷层,用于开发 CRUD 应用程序

描述

此项目旨在成为 Laravel 框架之上的一层有用的工具,以简化 CRUD 应用程序的开发。它避免了开发者重复开发 CRUD 逻辑的任务,使他们能够专注于应用程序特定领域的细节。

预期功能

  • 无干扰。
  • 高度可定制,具有钩子和可覆盖的函数。
  • 既适用于 RESTful API(JSON)也适用于标准 HTML 响应。
  • 考虑到良好的实践和设计模式。

安装

通过 Composer 安装此包

composer require carlosafonso/laravel-crud

然后,将 Afonso\LvCrud\Providers\LvCrudServiceProvider::class 添加到 config/app.php 中的提供者列表中。

不要忘记发布此包特定的配置文件

php artisan vendor:publish --provider="Afonso\LvCrud\Providers\LvCrudServiceProvider"

这将在你 config 文件夹内添加一个名为 crud.php 的新配置文件。

使用

让任何一个控制器继承自 Afonso\LvCrud\Controllers\CrudController

use Afonso\LvCrud\Controllers\CrudController;

class FoosController extends CrudController
{
    //
}

这将自动启用 CRUD 行为。

默认模型命名空间

此库假定所有模型都在 App 命名空间下。

App\Controllers\FoosController -> App\Foo

如果你的代码不遵循此约定,可以在控制器中通过覆盖 getModelNamespace 函数来指定默认模型命名空间。

public function getModelNamespace()
{
    return 'My\\Custom\\Namespace';
}

CrudModelInterface

此库期望所有相关模型实现 Afonso\LvCrud\Models\CrudModelInterface。你可以为所有模型执行此操作,或者仅实现一个基模型类,稍后将其扩展并按需覆盖。

HTML/JSON 支持

默认情况下,CRUD 控制器支持 JSON 和 HTML 响应。可以通过覆盖以下函数来调整此行为

/*
 * In this example we're only supporting JSON responses.
 */

public function supportsJson()
{
    return true;
}

public function supportsHtml()
{
    return false;
}

只读控制器

只读控制器不允许创建、更新或删除数据。

可以通过将 $readOnly 标志设置为 true 来声明控制器为只读。

class MyController extends CrudController
{
    protected $readOnly = true;
}

只读控制器在执行资源上的 POST、PUT 或 DELETE 操作时将返回 HTTP 状态码 405 Method Not Allowed

配置选项

以下属性可以在配置文件 crud.php 中进行修改

default_items_per_page

当未指定 URL 参数 page_size 时,每页默认实体数。