abnermouke/console-builder

ConsoleBuilder是一款优秀的管理后台/控制面板构建工具包,一键安装即可搭建一套完整后台模版,内含一套完整表格、表单构建器,开发高效,体验优良!

Installs: 25

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 1

Open Issues: 1

Language:JavaScript

1.2.0 2022-08-03 09:47 UTC

This package is auto-updated.

Last update: 2024-03-30 00:32:57 UTC


README

Power By Abnermouke abnermouke@outlook.com

此工具包由 Abnermouke abnermouke@outlook.com 开发并维护。

最后更新时间:2022年08月05日,停止更新,请使用全新构建方案:abnermouke/pros

Requirement - 环境要求

  1. PHP >= 7.2(建议安装7.4)
  2. Composer
  3. abnermouke/easy-builder
  4. Laravel Framework 6+

Installation - 安装方法

$ composer require "abnermouke/console-builder"

Configuration - 配置

  • 一切就绪之前,请先确保 "abnermouke/easy-builder" 配置已就位

点击 abnermouke/easy-builder 查看配置方法

  • config/app.phpproviders注册服务提供者
Abnermouke\ConsoleBuilder\ConsoleBuilderServiceProvider::class,
  • 如果你想只在非production的模式中使用构建器功能,可在AppServiceProvider中进行register()配置
public function register()
{
  if ($this->app->environment() !== 'production') {
      $this->app->register(\Abnermouke\ConsoleBuilder\ConsoleBuilderServiceProvider::class);
  }
  // ...
}
  • 构建工具提供一配置文件帮助开发者自行配置自己的构建配置,导出命令:
php artisan vendor:publish --provider="Abnermouke\ConsoleBuilder\ConsoleBuilderServiceProvider"
  • 设置路由
protected $middlewareGroups = [

       // 其他路由配置

        'abnermouke.console' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'abnermouke.console.auth' => [
            \App\Http\Middleware\Abnermouke\ConsoleBuilder\ConsoleBaseMiddleware::class
        ],
    ];
  • 注册路由
  • 移除 app/Http/Kernel.php 默认中间件:\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,

Laravel 6 与 Laravel 7 中配置路由服务 app/Providers/RouteServiceProvider.php

  public function map()
    {
        
        // 其他路由配置

        $this->mapAbnermoukeConsoleRoutes();
    }

    /**
     * Define the "abnermouke/console" routes for the application.
     *
     * These routes are typically stateless.
     *
     * @return void
     */
    protected function mapAbnermoukeConsoleRoutes()
    {
        Route::middleware('abnermouke.console')
            ->namespace('App\Http\Controllers\Abnermouke\Console')
            ->group(base_path('routes/abnermouke/console.php'));
    }

Laravel 8 中配置路由服务 app/Providers/RouteServiceProvider.php

public function boot()
{
    $this->configureRateLimiting();
    
    $this->routes(function () {
    
         // 其他路由服务注册

        Route::middleware('abnermouke.console')
            ->namespace('App\Http\Controllers\Abnermouke\Console')
            ->group(base_path('routes/abnermouke/console.php'));
    });
}

增加Csrf例外 app/Http/Middleware/VerifyCsrfToken.php (处理ueditor或其他插件文件上传无法加入csrf验证)

    protected $except = [
        
        //其他例外
    
        'abnermouke/console/uploader/*'
    ];
  • 添加辅助函数自动加载至 composer.json
     "autoload": {
       
       // 
        
        "files": [
            
            //其他加载文件
            
            "app/Helpers/console_builder.php"
        ]
    },
  • 执行 Composer Autoload 以生效辅助函数
composer dump-autoload

Usage 使用方法

执行命令:

php artisan builder:console
  • 构建表格方法
    ($builder = (new \Abnermouke\ConsoleBuilder\Builders\Table\ConsoleTableBuilder('__LIST_QUERY_URL__')))
        ->addButton($builder->buildBotton()->text('按钮名称')->url('跳转链接', '请求方式', true)->confirm_before_query('跳转前确认提示')->theme('primary')->id_suffix('自定义ID')->icon('自定义图标'))
        ->addButton($builder->buildBotton()->text('按钮名称')->ajax('Ajax跳转链接', '请求方式'))
        ->setCheckbox('选中时使用字段值', ['自定义的按钮ID'])
        ->setFields(function () use ($builder) {
            return ($fieldBuilder = new \Abnermouke\ConsoleBuilder\Builders\Table\Tools\TableFieldsBuilder())
                ->addField($fieldBuilder->buildTexts('字段名', '显示名称')-> ···)      //双行文本字段
                ->addField($fieldBuilder->buildAvatar('字段名', '显示名称')-> ···)     //多头像显示字段
                ->addField($fieldBuilder->buildDate('字段名', '显示名称')-> ···)       //日期显示字段
                ->addField($fieldBuilder->buildOption('字段名', '显示名称')-> ···)     //选项显示字段
                ->addField($fieldBuilder->buildProject('字段名', '显示名称')-> ···)    //详细介绍显示字段
                ->addField($fieldBuilder->buildRating('字段名', '显示名称')-> ···)     //评分显示字段
                ->addField($fieldBuilder->buildString('字段名', '显示名称')-> ···)     //字符串显示字段
        })
        ->addFilter($builder->filterAsInput()-> ···)            //添加input筛选项
        ->addFilter($builder->filterAsGroup()-> ···)            //添加分组选择筛选项
        ->addFilter($builder->filterAsSelect()-> ···)           //添加选择框筛选想
        ->addFilter($builder->filterAsSwitch()-> ···)           //添加switch形式筛选想
        ->addAction($builder->buildAction()->ajax(route('xxx', ['id' => '__ID__']))-> ···)      //添加数据操作(系统将自动转换当前栏字段为id的值替换__ID__,可设置多个替换字段)
        ->render();     //实例化构建器内容(返回html)
  • 构建表单方法
    ($builder = (new \Abnermouke\ConsoleBuilder\Builders\Form\ConsoleFormBuilder()))
        ->setTitle('标题', '描述')
        ->submit($builder->buildButton()-> ···)     //添加提交按钮(必须存在)
        ->back($builder->buildButton()-> ···)       //添加返回按钮
        ->setItems(function () {
            return ($formItemBuilder = (new \Abnermouke\ConsoleBuilder\Builders\Form\Tools\FormItemsBuilder()))
            ->addItem($formItemBuilder->buildInput('字段名', '显示名称')-> ···)        //input文本框
            ->addItem($formItemBuilder->buildCheckbox('字段名', '显示名称')-> ···)     //checkbox多选
            ->addItem($formItemBuilder->buildEditor('字段名', '显示名称')-> ···)       //富文本编辑器,ueditor、ck_Editor
            ->addItem($formItemBuilder->buildFiles('字段名', '显示名称')-> ···)        //文件上传(可批量上传)
            ->addItem($formItemBuilder->buildImage('字段名', '显示名称')-> ···)        //单图上传
            ->addItem($formItemBuilder->buildLinkage('字段名', '显示名称', 'JSON文件地址')-> ···)      ///N级联动
            ->addItem($formItemBuilder->buildRadio('字段名', '显示名称')->trigger('选中值', ['选中时显示字段', '未选中时不会显示'])-> ···)        //单选框
            ->addItem($formItemBuilder->buildSelect('字段名', '显示名称')-> ···)       //选择框
            ->addItem($formItemBuilder->buildTags('字段名', '显示名称')-> ···)         //标签
            ->addItem($formItemBuilder->buildTextarea('字段名', '显示名称')-> ···)     //文本域
            ->addItem($formItemBuilder->buildValues('字段名', '显示名称')-> ···)       //自定义结构类型(常用于答题、商品属性等)
            ->addItem($formItemBuilder->buildSwitch('字段名', '显示名称')->on('开启时使用值', ['开启时显示字段', 'switch关闭时不会显示'])->off('关闭时使用值', ['关闭时显示字段', 'switch开启时不会显示'])-> ···);      //switch开关
        })
->addStructure($builder->buildStructure()->addFiled('字段名', '显示栏(1-12)')->addFiled(···)->···)        //每一个结构块中可添加多个字段并自定义显示宽度比例(基于bootstrap col)
->bindTable('构建表格ID', '动态modalID')      //表格构建器Action或Button为form类型时使用
->render();     //实例化构建器内容(返回html)

表单构建器可对switch、radio类型数据进行触发处理,详看 -> triiger()

  • 系统提供多项自定义属性操作,-> 后可查看构建器提供的多个方法实例,花点时间了解,就能完全掌握他。
更新记录

2022.04.26 - 主要增加与构建器使用功能

  • 新增对表格构建器Action的筛选操作,可指定条件显示对应按钮
  • 新增表格构建器子列表获取功能,仅需获取列表时设置 setSubTable 即可,可无限极获取下级,也可定层级获取,常用于分类、商品-商品规格、订单-子订单、邀请关系、地区结构等功能
  • 修复已知问题与优化逻辑

2022.06.18 - 修复已知问题

  • 更改短信发送机制,优化发送逻辑提升稳定性
  • 修复表单构建器前后端默认值配置存在的问题
  • 修复中文文件名文件上传可能无法访问的问题

2022.08.05 - 修复已知问题并官宣停止维护

  • 修复文件上传文件名问题
  • 停止更新

License

MIT