samiksengupta/laravel-admin

快速设置Laravel项目的管理面板、API端点和路由

安装: 181

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

语言:JavaScript

v1.2.4 2024-03-07 05:48 UTC

This package is auto-updated.

Last update: 2024-10-01 00:25:53 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

快速设置Laravel项目的管理面板、API端点和路由。您可以使用此包向您的项目添加以下功能。

  • 预构建的包含用户和角色管理的Admin面板。
  • 用于您的模型、控制器和策略的基类,将自动处理CRUD操作、DataTable响应生成、验证、UI元素自定义等常见功能。
  • 用于列表和CRUD操作的Blade视图,易于在项目侧扩展。
  • 基于AdminLTE主题的Bootstrap UI,具有基于JavaScript的表单提交。
  • 易于管理的基于角色的权限系统。
  • 自动路由支持。
  • API资源列表和测试器。
  • 易于使用的自定义命令,可让您一次性创建符合Laravel Admin规范的模型、迁移、控制器、策略、权限和菜单项。
  • 项目中的所有内容都可以被覆盖,以便进行精确控制。

安装

您可以通过composer安装此包

composer require samiksengupta/laravel-admin

用法

设置管理面板

在您的项目中将此包安装完成后,并在您的.env文件中配置了数据库连接后,运行以下命令

php artisan admin:install

这将发布此包所需配置、资源和种子文件到您的项目,并运行迁移和种子文件。

如果您不希望运行种子文件,而是手动运行,可以在安装时使用--empty选项。

php artisan admin:install --empty

如果您想强制覆盖所有文件,可以在安装时使用--force选项。

php artisan admin:install --force

如果您最近更新了Laravel Admin包,可以在安装时使用--update选项。这将仅覆盖资源和种子文件,并跳过一些选项。

php artisan admin:install --update

注意:如果您在安装时未使用--update选项,您将提示用LaravelAdmin提供的文件替换database/seeders/DatabaseSeeder。建议在第一次安装Laravel Admin时进行此操作,因为这将使使用php artisan db:seed命令运行种子文件更加容易。

默认角色和用户

默认情况下,Laravel Admin安装了两个角色DevAdmin。Dev是一个不受限制的角色,忽略所有权限设置(可以访问一切)。Admin被赋予大多数管理权限,不包括一些超级级别权限,例如管理删除设置和运行命令的权限。Dev可以授予Admin任何权限,如果他们想的话,并且Admin可以将他们的任何权限传递给之后创建的任何新角色。

如果您在安装时未使用--empty选项,还将创建一个默认的Dev用户以进行初始登录。以下凭据可用于登录。

在相同的安装条件下,如果您没有创建Admin用户,您将被询问是否要创建一个。如果您继续,则需要提供基本用户数据以继续。

扩展Laravel Admin用户模型和生成策略

如果不使用--update选项进行安装,安装脚本将自动尝试将默认的Laravel用户模型(App\Models\User)设置为Laravel Admin提供的用户模型(Samik\LaravelAdmin\Models\User)的子模型,然后为该用户模型生成策略。如果由于某种原因此过程失败,您需要手动进行此操作,并生成策略以确保一切顺利。

要完成此操作,您可以更改用户模型以扩展Laravel Admin的用户模型

namespace App\Models;

class User extends \Samik\LaravelAdmin\Models\User
{

}

然后使用以下命令生成用户策略

php artisan make:xpolicy UserPolicy

如果在此之前已存在某种形式的App\Policies\UserPolicy,则不会创建或替换它。然后您需要确保策略类扩展了Laravel Admin的CRUD策略类(Samik\LaravelAdmin\Policies\CrudPolicy

namespace App\Policies;

use Samik\LaravelAdmin\Policies\CrudPolicy;

class UserPolicy extends CrudPolicy
{
    
}

创建管理面板模块

模块只是一组共同工作的模型、迁移、控制器和策略文件,它们一起表示您在管理面板中的数据。您可以使用以下命令一次性创建所有这些文件

php artisan make:module MyModule

这将创建一个新的模型类、为模型数据库表创建新的迁移、控制器和策略在其相应的位置。您可以在新创建的迁移文件中添加所需的列,然后运行迁移以生成包含这些列的表。

这些类与Laravel自己的模型/控制器/策略类不同的是,它们扩展了Laravel Admin的基本类,这些基本类为CRUD操作、验证、筛选生成、数据表响应生成等功能添加了额外功能。

如果您想快速生成此模型的默认CRUD权限以及访问相应Web路由的菜单项条目,可以使用以下命令

php artisan make:module MyModule --permissions --menuitems --seed

这将更新database/data/permissions.jsondatabase/data/menu-items.json文件,然后使用这些文件运行种子来填充数据库。

如果您想最初跳过填充,可以省略--seed选项,然后调整这些JSON文件并运行

php artisan db:seed --class=PermissionSeeder

手动填充权限(使用updateOrCreate操作)

php artisan db:seed --class=MenuItemSeeder

手动填充菜单项(使用截断和插入操作)

运行这些命令后,您应该有以下内容

  • App\Models命名空间中的MyModule
  • App\Http\Controllers\Admin命名空间中的MyModuleController
  • App\Policies命名空间中的MyModulePolicy
  • database/migrations中的*_create_my_modules_table文件
  • database/data/menu-items.json中的my-modules路由菜单项条目
  • database/data/permissions.json中的MenuItem权限条目
  • 如果启用了自动路由,将支持my-modulesmy-modules/{id}my-modules/newmy-modules/{id}/editmy-modules/{id}/delete等路由

使用HasFileUploads特性

Laravel Admin附带一个特性,可以自动处理文件上传和删除。在您的模型中使用Samik\LaravelAdmin\Traits\HasFileUploads特性,并指定文件存储的位置,模型将在创建时存储文件。在删除或更新时,旧的存储文件也将被删除。

namespace App\Models;

use Samik\LaravelAdmin\Models\BaseModel;
use Samik\LaravelAdmin\Traits\HasFileUploads;

class MyModel extends BaseModel
{
    // use the trait
    use HasFileUploads;

    // specify the upload field
    protected $uploadFields = ['myfile' => ['folder' => 'my-models', 'disk' => 'public']];

    // specify the field type options for form generation and value display (optional)
    public static function elements()
    {
        return [
            'myfile' => [
                'type' => 'file',,
                'displayAs' => 'image'
            ],
        ];
    }
}

在这个例子中,模型将期望请求中名为'myfile'的字段。此特性也将处理Base64编码的字段。在$uploadFields配置中,如果没有指定文件夹,则假定名为'uploads'的文件夹。所有上传的文件都将存储在指定文件夹内的子文件夹中,按当前年月分组,以便于文件夹导航。

如果文件已上传但您无法通过URL访问它,请尝试生成符号链接

php artisan storage:link

测试

composer test

更新日志

请参阅变更日志获取最近更改的更多信息。

贡献

请参阅贡献指南获取详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件samiksengupta@hotmail.com联系,而不是使用问题跟踪器。

致谢

许可证

MIT 许可证 (MIT)。请参阅许可证文件获取更多信息。

Laravel 包模板

此包是用Laravel 包模板生成的。