kjjdion/laracrud

为 Laravel 5.8 专门设计的简单 CRUD 后端包。

1.0.6 2019-03-12 10:32 UTC

This package is auto-updated.

Last update: 2024-09-12 22:57:45 UTC


README

包不再维护

请考虑使用 Laravel AJAX CRUD 代替: https://github.com/kdion4891/laravel-ajax-crud

Laracrud

为 Laravel 5.8 专门设计的简单 CRUD 后端包。

截图: https://imgur.com/a/rAWwEvu

功能

  • 用于快速生成资源(控制器、模型、迁移、视图、路由)的 CRUD 命令
  • 基于用户角色的资源路径和权限
  • 内置用户 CRUD
  • 集成 Laravel 登录认证
  • 集成 Datatables
  • 基于模型表列的动态模型填充
  • 易于扩展的控制器
  • AJAX 表单验证
  • 完全响应式(Bootstrap 4)
  • & 更多

安装

此包与干净的 Laravel 安装配合最佳,但也可以与现有安装一起使用。

  1. 通过 composer 安装: composer require kjjdion/laracrud
  2. 在您的 .env 文件中配置应用程序名称、URL、数据库等。
  3. config/app.php 中设置应用程序时区(推荐但不是必需的)。

配置

如果您正在干净的 Laravel 5.8 应用程序上安装,请使用 --force

php artisan vendor:publish --provider="Kjjdion\Laracrud\Providers\LaracrudServiceProvider" --tag="install" --force

如果您正在现有的 Laravel 5.8 应用程序上安装,请勿使用 --force

php artisan vendor:publish --provider="Kjjdion\Laracrud\Providers\LaracrudServiceProvider" --tag="install"

如果您 没有 使用 --force,您还必须进行以下修改

  1. ColumnFillable 特性添加到您的 User 模型。
  2. 清空 public/css/app.csspublic/js/app.js 的内容以避免冲突。
  3. routes/web.php 中将默认的 / 路由重定向到 loginRoute::redirect('/', 'login')
  4. 如果存在,则删除默认的 Laravel 认证路由。

提示: 您可以在 config/laracrud.php 中更改默认的 Fontawesome 图标类。

迁移

完成安装和配置后,运行: php artisan migrate

登录

访问您的应用程序 URL。您应该会看到登录界面。默认管理员登录信息如下

调整细节

此包旨在极具灵活性和可修改性。

扩展控制器

如果您想修改默认的包控制器,只需创建自己的控制器,这些控制器扩展了包控制器,然后更新 config/laracrud.php 中的新控制器路径。

修改布局

包使用的所有布局文件都位于 resources/views/vendor/laracrud/layouts/*。您可以在这些文件中进行任何修改。请注意,每次生成 CRUD 时,都会自动在 nav 布局文件中插入新的导航链接。

发布包文件

可以发布所有包文件以进行进一步的调整。以下标签可用

  • config:发布配置文件
  • migrations:发布迁移
  • views:发布所有视图
  • install:发布所有必要的安装文件

例如,发布配置文件

php artisan vendor:publish --provider="Kjjdion\Laracrud\Providers\LaracrudServiceProvider" --tag="config"

用户角色概念

可在 config/laracrud.php 中修改可用的用户角色。每次为新的角色生成 CRUD 时,应将所述角色添加到 roles 数组中。

概念很简单,每个角色都有自己的控制器、视图和路由,以便分离每个角色的关注点/权限。

所有角色的资源命名空间/路径都以前缀了该角色的名称,例如,管理员角色的资源位于

  • App\Http\Controllers\Admin
  • resources/views/admin
  • route('admin.models.*')

您还可以使用Gate中间件和blade指令,并在其中包含角色名称,以确保用户具有该角色,例如:

  • @can('Admin')
  • $this->middleware(['auth', 'can:Admin']);

CRUD 生成器

您可以使用 CRUD 命令来创建新资源的控制器、模型、迁移、导航链接、视图和路由。这可以节省大量时间和麻烦。

要生成新资源,请运行:php artisan make:crud "角色名称" "模型名称"

角色名称将用于控制器命名空间、视图和路由路径。 如果角色或模型名称包含多个单词,请确保使用引号和空格。此外,请确保使用单数形式,而不是复数。

例如,假设我想让管理员能够访问一个新的 Car 资源。我会运行 php artisan make:crud Admin Car。现在管理员可以访问这个新资源了。

脚手架只为模型生成具有 name 属性。您必须更新控制器、模型、迁移、视图和路由,以添加生成资源所需的新属性或功能。

准备好后,您可以通过运行 php artisan migrate 来运行新资源的迁移。

JSON 响应

由于所有表单都使用 AJAX,因此期望控制器返回具有特定键/值对的 JSON 响应,例如:

return response()->json([
    'flash_now' => ['success', 'User created!'],
    'dismiss_modal' => true,
    'reload_datatables' => true,
]);

以下键/值对可用。

'dismiss_modal' => true,

关闭当前打开的 Bootstrap 模态框。

'flash_now' => ['success', 'User created!'],

立即显示警告。第一个数组元素是 bootstrap 类名,第二个是消息。

'flash_after' => ['success', 'User created!'],

在下一个请求中显示警告。这对于在重定向/页面重新加载后显示警告很有用。

`redirect` => route('login'),

将用户重定向到指定的 URL。

`reload_datatables` => true,

在页面上用更新后的数据重新加载数据表。

`reload_page` => true,

重新加载用户当前所在的页面。

自定义响应

如果您希望添加自己的 JSON 响应处理器,您可以在 public/js/app.js 文件中通过利用 ajaxComplete 方法来实现

$(document).ajaxComplete(function (event, xhr, settings) {
    if (xhr.hasOwnProperty('responseJSON') && xhr.responseJSON.hasOwnProperty('do_my_function')) {
        console.log(xhr.responseJSON.do_my_function);
    }
});

在上面的示例中,您的 JSON 响应的键将是 do_my_function