slimcube/admingenerator

用于为实体创建管理界面的包

1.3 2018-11-22 17:49 UTC

This package is not auto-updated.

Last update: 2024-09-20 22:48:26 UTC


README

此包是一个管理生成器,可以帮助您根据数据库结构生成管理界面。其主要目标是快速创建创建CRUD所需文件。生成器使用Laravel框架和Vue JS框架构建。

以下文件将被创建

  • 模型
  • 验证请求
  • 请求转换器
  • 控制器
  • 索引和创建Vue文件
  • API路由
  • JS路由

此外,该包还提供以下文件

  • 管理和本地中间件
  • 用户模型
  • 通用页面的页面、区块和SEO结构
  • 图像处理结构
  • 管理布局

该包还依赖于以下包以快速设置项目

  • cviebrock的Sluggable,用于为模型生成短链接
  • dimsav的Translatable,为模型提供翻译
  • Laravel Socialite,允许使用FB、Google或Github登录
  • Intervention image,用于处理图像
  • Laravel passport,用于管理令牌
  • Laravel spatie permission,用于管理角色和权限
  • Laravel fractal,用于将数据库结构进行掩码以提高安全性
  • Doctrine dbal,用于分析数据库结构

安装

在新的Laravel安装上,您可以通过运行以下命令来安装此包

composer require sleekcube/admingenerator

安装完成后,您需要设置Laravel以使用此包。只需运行以下命令

php artisan sleekcube:setup

完成后,运行

composer dump-autoload

之后,您需要将数据库连接到您的Laravel应用程序。

运行以下命令

php artisan config:cache;
php artisan storage:link;
php artisan migrate:fresh;
php artisan passport:install;
php artisan db:seed;

完成后,您应该尝试访问应用程序的/admin路由。理想情况下,您会通过虚拟主机将应用程序连接起来。无论如何,请确保更改.env文件中的APP_URL。正如您在UserSeeder中看到的,有一个用户名为Admin@test.com和密码为secret的管理员

如何使用此包

该包提供三个命令,针对三种类型的数据库结构。

  • 无关的独立模型
php artisan generate:simple [model]
  • 相关模型
php artisan generate:belongto [model]
  • 翻译模型
php artisan generate:translation [model]

注意:模型名称需要使用单数形式。

该包还提供调度命令。这允许您排序迁移。首先,您需要发布包配置

php artisan vendor:publish --provider="Sleekcube\AdminGenerator\AdminGeneratorServiceProvider" --tag="config"

在您的配置目录中,您将找到一个sleekcube.php文件。在这里,您可以定义如下数组

    'migrations' => [
        'tablename1' => 'simple', 
        'tablename2' => 'belongto',
        'tablename3' => 'translation',  
    ]

迁移完成后,为了重新编译您的资产,您需要运行

npm run production

示例

    // Migrations
    public function up()
    {
        Schema::create('tags', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('description')->nullable();
            $table->string('slug');
            $table->timestamps();
        });
        
        Schema::create('articles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body')->nullable();
            $table->string('slug');
            $table->integer('tag_id')->unsigned();
            $table->foreign('tag_id')->references('id')->on('tags');
            $table->timestamps();
        });
        
        Schema::create('blogs', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('views')->default(false);
            $table->timestamps();
        });

        Schema::create('blog_translations', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('blog_id')->unsigned();
            $table->string('locale')->index();

            $table->string('title');
            $table->text('description');
            $table->string('slug');

            $table->unique(['blog_id','locale']);
            $table->foreign('blog_id')->references('id')->on('blogs')->onDelete('cascade');
        });
    }
    // in config/sleecube.php
    'migrations' => [
        'tag'       => 'simple', 
        'article'   => 'belongto',
        'blog'      => 'translation',  
    ]

这将创建以下迁移

php artisan generate:simple tag;
php artisan generate:belongto article;
php artisan generate:translation blog;

重新编译您的资产,并检查以下URL

  • /admin/tag
  • /admin/article
  • /admin/blog

Hazza

约束

作为安全特性,模型的id从前端隐藏。映射始终使用短链接完成,这意味着模型始终需要有一个字符串,该字符串将用作生成短链接的源。

未来开发

  • 测试包
  • 生成CRUD生成的测试
  • 链接翻译模型
  • 适应多对多关系
  • 适应一对多关系
  • 处理更多表单类型。目前只支持字符串、文本和整数