From 81270ebb838343790cd5ad6127b163c774993747 Mon Sep 17 00:00:00 2001
From: panliang <1163816051@qq.com>
Date: Thu, 28 Jul 2022 10:00:03 +0800
Subject: [PATCH 1/2] init goods
---
packages/goods/.gitignore | 7 ++
packages/goods/README.md | 3 +
packages/goods/composer.json | 31 ++++++++
packages/goods/src/GoodsServiceProvider.php | 27 +++++++
packages/goods/src/Http/routes.php | 3 +
packages/goods/src/Setting.php | 14 ++++
packages/goods/updates/CreateGoodsTable.php | 81 +++++++++++++++++++++
packages/goods/version.php | 7 ++
8 files changed, 173 insertions(+)
create mode 100644 packages/goods/.gitignore
create mode 100644 packages/goods/README.md
create mode 100644 packages/goods/composer.json
create mode 100644 packages/goods/src/GoodsServiceProvider.php
create mode 100644 packages/goods/src/Http/routes.php
create mode 100644 packages/goods/src/Setting.php
create mode 100644 packages/goods/updates/CreateGoodsTable.php
create mode 100644 packages/goods/version.php
diff --git a/packages/goods/.gitignore b/packages/goods/.gitignore
new file mode 100644
index 0000000..9d4b362
--- /dev/null
+++ b/packages/goods/.gitignore
@@ -0,0 +1,7 @@
+.DS_Store
+phpunit.phar
+/vendor
+composer.phar
+composer.lock
+*.project
+.idea/
\ No newline at end of file
diff --git a/packages/goods/README.md b/packages/goods/README.md
new file mode 100644
index 0000000..838df4c
--- /dev/null
+++ b/packages/goods/README.md
@@ -0,0 +1,3 @@
+# Dcat Admin Extension
+
+
diff --git a/packages/goods/composer.json b/packages/goods/composer.json
new file mode 100644
index 0000000..ed52568
--- /dev/null
+++ b/packages/goods/composer.json
@@ -0,0 +1,31 @@
+{
+ "name": "peidikeji/goods",
+ "alias": "goods",
+ "description": "基础商品管理",
+ "type": "library",
+ "keywords": ["dcat-admin", "extension"],
+ "homepage": "https://github.com/peidikeji/goods",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "panliang",
+ "email": "1163816051@qq.com"
+ }
+ ],
+ "require": {
+ "php": ">=7.1.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Peidikeji\\Goods\\": "src/"
+ }
+ },
+ "extra": {
+ "dcat-admin": "Peidikeji\\Goods\\GoodsServiceProvider",
+ "laravel": {
+ "providers": [
+ "Peidikeji\\Goods\\GoodsServiceProvider"
+ ]
+ }
+ }
+}
diff --git a/packages/goods/src/GoodsServiceProvider.php b/packages/goods/src/GoodsServiceProvider.php
new file mode 100644
index 0000000..1902d7c
--- /dev/null
+++ b/packages/goods/src/GoodsServiceProvider.php
@@ -0,0 +1,27 @@
+text('key1')->required();
+ $this->text('key2')->required();
+ }
+}
diff --git a/packages/goods/updates/CreateGoodsTable.php b/packages/goods/updates/CreateGoodsTable.php
new file mode 100644
index 0000000..0c83f4d
--- /dev/null
+++ b/packages/goods/updates/CreateGoodsTable.php
@@ -0,0 +1,81 @@
+id();
+ $table->string('name')->comment('分类名称');
+ $table->string('image')->nullable()->comment('封面图');
+ $table->string('description')->nullable()->comment('描述');
+ $table->unsignedBigInteger('parent_id')->default(0)->comment('父级ID');
+ $table->unsignedInteger('level')->default(1)->comment('层级');
+ $table->unsignedInteger('sort')->default(1)->comment('排序 asc');
+ $table->string('path')->default('-')->comment('所有的父级ID');
+
+ $table->comment('商品分类');
+ });
+
+ Schema::create('goods', function (Blueprint $table) {
+ $table->id();
+ $table->unsignedBigInteger('category_id')->comment('所属分类, 关联 goods_category.id');
+ $table->string('name')->comment('商品名称');
+ $table->string('goods_sn')->unique()->comment('编号');
+ $table->string('cover_image')->nullable()->comment('封面图');
+ $table->json('images')->nullable()->comment('图片集');
+ $table->string('description')->nullable()->comment('描述');
+ $table->text('content')->nullable()->comment('详细');
+ $table->unsignedInteger('on_sale')->default(0)->comment('是否上架');
+ $table->unsignedInteger('stock')->default(0)->comment('库存');
+ $table->json('weight')->nullable()->comment('重量 {weight: 0, unit: "g"}');
+ $table->unsignedInteger('sold_count')->default(0)->comment('实际销量');
+ $table->decimal('price', 12, 2)->comment('售价');
+ $table->json('attr')->nullable()->comment('属性');
+ $table->json('spec')->nullable()->comment('规格');
+ $table->json('part')->nullable()->comment('配件');
+ $table->string('category_path');
+ $table->timestamps();
+ $table->softDeletes();
+
+ $table->foreign('category_id')->references('id')->on('goods_category');
+
+ $table->comment('商品');
+ });
+
+ Schema::create('goods_sku', function (Blueprint $table) {
+ $table->id();
+ $table->string('sn')->unique()->comment('货号');
+ $table->unsignedBigInteger('goods_id')->comment('所属商品, 关联 goods.id');
+ $table->string('name')->comment('名称');
+ $table->decimal('price', 12, 2)->comment('价格');
+ $table->unsignedInteger('stock')->comment('库存');
+ $table->json('spec')->nullable()->comment('规格');
+
+ $table->foreign('goods_id')->references('id')->on('goods');
+
+ $table->comment('商品-SKU');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('goods_sku');
+ Schema::dropIfExists('goods');
+ Schema::dropIfExists('goods_category');
+ }
+};
diff --git a/packages/goods/version.php b/packages/goods/version.php
new file mode 100644
index 0000000..1a623b7
--- /dev/null
+++ b/packages/goods/version.php
@@ -0,0 +1,7 @@
+ [
+ 'Initialize extension.',
+ ],
+];
From 8286515094bdfcd286661321cce664d72a15942f Mon Sep 17 00:00:00 2001
From: panliang <1163816051@qq.com>
Date: Thu, 28 Jul 2022 15:12:25 +0800
Subject: [PATCH 2/2] keywords
---
README.md | 193 +-----------------
packages/goods/composer.json | 2 +-
.../resources/lang/en/goods-category.php | 4 +
.../resources/lang/zh_CN/goods-category.php | 21 ++
packages/goods/src/GoodsServiceProvider.php | 21 +-
.../Admin/GoodsCategoryController.php | 63 ++++++
packages/goods/src/Http/routes.php | 4 +
packages/goods/src/Models/Goods.php | 15 ++
packages/goods/src/Models/GoodsCategory.php | 71 +++++++
packages/goods/updates/CreateGoodsTable.php | 6 +-
packages/goods/version.php | 14 +-
.../keywords/updates/KeywordsTableSeeder.php | 56 +++++
packages/keywords/version.php | 3 +-
src/Form/Field.php | 2 +-
src/Show/Tools.php | 2 +-
15 files changed, 263 insertions(+), 214 deletions(-)
create mode 100644 packages/goods/resources/lang/en/goods-category.php
create mode 100644 packages/goods/resources/lang/zh_CN/goods-category.php
create mode 100644 packages/goods/src/Http/Controllers/Admin/GoodsCategoryController.php
create mode 100644 packages/goods/src/Models/Goods.php
create mode 100644 packages/goods/src/Models/GoodsCategory.php
create mode 100644 packages/keywords/updates/KeywordsTableSeeder.php
diff --git a/README.md b/README.md
index be4ea6b..9e36eb0 100755
--- a/README.md
+++ b/README.md
@@ -1,193 +1,20 @@
+# Dcat-Admin
-
-

-
-
+Fork From [jqhph/dcat-admin](https://github.com/jqhph/dcat-admin)
-
-
-
-
-
-
-
-
-
-
-
-
+## 改动
-Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需很少的代码即可快速构建出一个功能完善的高颜值后台系统。内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码,对后端开发者非常友好。
+### Show
+### 详细页-列表按钮点击跳转方式
-- [官方网站](http://www.dcatadmin.com)
-- [中文文档](https://learnku.com/docs/dcat-admin)
-- [English documentions](http://www.dcatadmin.com/docs/en-2.x/quick-start.html)
-- [Demo / 在线演示](http://103.39.211.179:8080/admin)
-- [Demo源码](https://github.com/jqhph/dcat-admin-demo)
-- [Demo源码 (码云)](https://gitee.com/jqhph/dcat-admin-demo)
-- [扩展](#)
+- `packages/dcat-admin/src/Show/Tools.php` 254行
-
-
-
-
-### 功能特性
-
-- [x] 简洁优雅、灵活可扩展的API
-- [x] 用户管理
-- [x] RBAC权限管理,支持无限极权限节点
-- [x] 菜单管理
-- [x] 使用pjax构建无刷新页面,支持**按需加载**静态资源,可以无限扩展组件而不影响整体性能
-- [x] 松耦合的页面构建与数据操作设计,可轻松切换数据源
-- [x] 自定义页面
-- [x] 自定义主题配色
-- [x] 多主题切换功能,内置多种主题色
-- [x] 可轻松构建无菜单栏的独立页面(如可用于构建弹窗选择器等功能)
-- [x] 插件功能
-- [x] 可视化代码生成器,可根据数据表一键生成增删改查页面
-- [x] 数据表格构建工具,内置丰富的表格常用功能(如组合表头、数据导出、搜索、快捷创建、批量操作等)
-- [x] 树状表格功能构建工具,支持分页和点击加载
-- [x] 数据表单构建工具,内置丰富的表单类型,支持表单异步提交
-- [x] 分步表单构建工具
-- [x] 弹窗表单构建工具
-- [x] 数据详情页构建工具
-- [x] 无限层级树状页面构建工具,支持用拖拽的方式实现数据的层级、排序等操作
-- [x] 内置丰富的常用页面组件(如图表、数据统计卡片、下拉菜单、Tab卡片、提示工具等)
-- [x] `Section`功能(类似`Wordpress`的`Filter`和`blade`模板的`section`标签)
-- [x] 异步文件上传表单,支持分块多线程上传
-- [x] 多应用
-- [ ] 插件市场,只需在管理页面轻轻点击鼠标即可完成插件的安装、更新和卸载等操作
-
-
-### 环境
- - PHP >= 7.1.0
- - Laravel 5.5.0 ~ 9.*
- - Fileinfo PHP Extension
-
-### 安装
-
-> 如果安装过程中出现`composer`下载过慢或安装失败的情况,请运行命令`composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/`把`composer`镜像更换为阿里云镜像。
-
-首先需要安装`laravel`框架,如已安装可以跳过此步骤。如果您是第一次使用`laravel`,请务必先阅读文档 [安装 《Laravel中文文档》](https://learnku.com/docs/laravel/8.x/installation/9354) !
-```bash
-composer create-project --prefer-dist laravel/laravel 项目名称 7.*
-# 或
-composer create-project --prefer-dist laravel/laravel 项目名称
+```html
+
```
-安装完`laravel`之后需要修改`.env`文件,设置数据库连接设置正确
-
-```dotenv
-DB_CONNECTION=mysql
-DB_HOST=127.0.0.1
-DB_PORT=3306
-DB_DATABASE=dcat-admin
-DB_USERNAME=root
-DB_PASSWORD=
+```html
+
```
-安装`dcat-admin`
-
-
-```
-cd {项目名称}
-
-composer require dcat/laravel-admin
-```
-
-然后运行下面的命令来发布资源:
-
-```
-php artisan admin:publish
-```
-
-在该命令会生成配置文件`config/admin.php`,可以在里面修改安装的地址、数据库连接、以及表名,建议都是用默认配置不修改。
-
-然后运行下面的命令完成安装:
-
-> 执行这一步命令可能会报以下错误`Specified key was too long ... 767 bytes`,如果出现这个报错,请在`app/Providers/AppServiceProvider.php`文件的`boot`方法中加上代码`\Schema::defaultStringLength(191);`,然后删除掉数据库中的所有数据表,再重新运行一遍`php artisan admin:install`命令即可。
-
-```
-php artisan admin:install
-```
-
-上述步骤操作完成之后就可以配置`web`服务了,**注意需要把`web`目录指向`public`目录**!如果用的是`nginx`,还需要在配置中加上伪静态配置
-```dotenv
-location / {
- try_files $uri $uri/ /index.php?$query_string;
-}
-```
-
-启动服务后,在浏览器打开 `http://localhost/admin`,使用用户名 `admin` 和密码 `admin`登陆。
-
-
-
-### 扩展
-
-| 扩展 | 描述 | dcat-admin 版本 |
-| ------------------------------------------------ | ---------------------------------------- |---------------------------------------- |
-| [mosiboom/dcat-iframe-tab](https://github.com/mosiboom/dcat-iframe-tab) | IFRAME TAB标签切换 | 2.x |
-| [super-eggs/dcat-distpicker](https://github.com/super-eggs/dcat-distpicker) | 省市区联动 | 2.x |
-| [ueditor](https://github.com/jqhph/dcat-admin-ueditor) | 百度在线编辑器 | 1.x |
-| [grid-sortable](https://github.com/jqhph/dcat-admin-grid-sortable) | 表格拖曳排序工具 | 1.x |
-
-
-### 鸣谢
-`Dcat Admin` 基于以下组件:
-
-+ [Laravel](https://laravel.com/)
-+ [Laravel Admin](https://www.laravel-admin.org/)
-+ [AdminLTE3](https://github.com/ColorlibHQ/AdminLTE)
-+ [bootstrap4](https://getbootstrap.com/)
-+ [jQuery3](https://jquery.com/)
-+ [Eonasdan Datetimepicker](https://github.com/Eonasdan/bootstrap-datetimepicker/)
-+ [font-awesome](http://fontawesome.io)
-+ [jquery-form](https://github.com/jquery-form/form)
-+ [moment](http://momentjs.com/)
-+ [webuploader](http://fex.baidu.com/webuploader/)
-+ [jquery-pjax](https://github.com/defunkt/jquery-pjax)
-+ [Nestable](http://dbushell.github.io/Nestable/)
-+ [toastr](http://codeseven.github.io/toastr/)
-+ [editor-md](https://github.com/pandao/editor.md)
-+ [fontawesome-iconpicker](https://github.com/itsjavi/fontawesome-iconpicker)
-+ [layer弹出层](http://layer.layui.com/)
-+ [char.js](https://www.chartjs.org)
-+ [nprogress](https://ricostacruz.com/nprogress/)
-+ [bootstrap-validator](https://github.com/1000hz/bootstrap-validator)
-+ [Google map](https://www.google.com/maps)
-+ [Tencent map](http://lbs.qq.com/)
-
-### Contributors
-
-#### Code Contributors
-
-This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
-
-
-### Financial Contributors
-
-Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/dcat-admin/contribute)]
-
-#### Individuals
-
-
-
-#### Organizations
-
-Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/dcat-admin/contribute)]
-
-
-
-
-
-
-
-
-
-
-
-
-### License
-------------
-`dcat-admin` is licensed under [The MIT License (MIT)](LICENSE).
diff --git a/packages/goods/composer.json b/packages/goods/composer.json
index ed52568..3253755 100644
--- a/packages/goods/composer.json
+++ b/packages/goods/composer.json
@@ -1,5 +1,5 @@
{
- "name": "peidikeji/goods",
+ "name": "peidikeji/dcat-admin-extension-goods",
"alias": "goods",
"description": "基础商品管理",
"type": "library",
diff --git a/packages/goods/resources/lang/en/goods-category.php b/packages/goods/resources/lang/en/goods-category.php
new file mode 100644
index 0000000..b625128
--- /dev/null
+++ b/packages/goods/resources/lang/en/goods-category.php
@@ -0,0 +1,4 @@
+ [
+ 'GoodsCategory' => '商品分类',
+ 'goods' => '商品管理',
+ 'category' => '分类管理',
+ 'root' => '无',
+ ],
+ 'fields' => [
+ 'name' => '分类名称',
+ 'image' => '图片',
+ 'description' => '描述',
+ 'sort' => '排序(正序)',
+ 'parent_id' => '上级',
+ 'is_enable' => '开启',
+ 'parent' => [
+ 'name' => '上级'
+ ]
+ ]
+];
diff --git a/packages/goods/src/GoodsServiceProvider.php b/packages/goods/src/GoodsServiceProvider.php
index 1902d7c..8e6b5a1 100644
--- a/packages/goods/src/GoodsServiceProvider.php
+++ b/packages/goods/src/GoodsServiceProvider.php
@@ -7,21 +7,8 @@ use Dcat\Admin\Admin;
class GoodsServiceProvider extends ServiceProvider
{
- public function register()
- {
- //
- }
-
- public function init()
- {
- parent::init();
-
- //
-
- }
-
- // public function settingForm()
- // {
- // return new Setting($this);
- // }
+ protected $menu = [
+ ['title' => '商品管理', 'uri' => '', 'icon' => ''],
+ ['title' => '商品分类', 'uri' => 'goods/category', 'icon' => '', 'parent' => '商品管理'],
+ ];
}
diff --git a/packages/goods/src/Http/Controllers/Admin/GoodsCategoryController.php b/packages/goods/src/Http/Controllers/Admin/GoodsCategoryController.php
new file mode 100644
index 0000000..6223aef
--- /dev/null
+++ b/packages/goods/src/Http/Controllers/Admin/GoodsCategoryController.php
@@ -0,0 +1,63 @@
+disableRowSelector();
+
+ $grid->column('name')->tree(true, false);
+ $grid->column('image')->image('', 100);
+ $grid->column('sort')->editable(['mask' => '{alias:\'numeric\',min:0,max:999}']);
+ $grid->column('is_enable')->switch();
+
+ return $grid;
+ }
+
+ protected function form()
+ {
+ $form = Form::make(GoodsCategory::with(['parent']));
+
+ $form->select('parent_id')->help('不选默认为顶级')->options(GoodsCategory::selectOptions())->default(0);
+
+ $form->text('name')->required();
+ $form->image('image')
+ ->uniqueName()
+ ->move('article-category')
+ ->autoUpload();
+ $form->number('sort')
+ ->min(0)
+ ->default(1)
+ ->help('数值越小, 越靠前');
+ $form->switch('is_enable')->default(1);
+ $form->text('description');
+
+ return $form;
+ }
+
+ protected function detail($id)
+ {
+ $info = GoodsCategory::with(['parent'])->findOrFail($id);
+ $show = Show::make($info);
+
+ $show->field('name');
+ $show->field('parent.name');
+ $show->field('image')->image('', 100);
+ $show->field('description');
+ $show->field('sort');
+
+ return $show;
+ }
+}
diff --git a/packages/goods/src/Http/routes.php b/packages/goods/src/Http/routes.php
index 7c4d255..6e9220b 100644
--- a/packages/goods/src/Http/routes.php
+++ b/packages/goods/src/Http/routes.php
@@ -1,3 +1,7 @@
parent_id) {
+ // 将层级设为 1
+ $category->level = 1;
+ // 将 path 设为 -
+ $category->path = '-';
+ } else {
+ // 将层级设为父类目的层级 + 1
+ $category->level = $category->parent->level + 1;
+ // 将 path 值设为父类目的 path 追加父类目 ID 以及最后跟上一个 - 分隔符
+ $category->path = $category->parent->path.$category->parent_id.'-';
+ }
+ });
+
+ static::deleting(function ($category) {
+ // 所有下级分类
+ $ids = GoodsCategory::where('path', 'like', '%-'.$category->id.'-%')->pluck('id');
+ // 检查下级分类是否包含商品
+ if (Goods::whereIn('category_id', array_merge($ids, [$category->id]))->exists()) {
+ // todo 阻止删除该分类
+ }
+ // 删除所有下级分类
+ GoodsCategory::where('path', 'like', '%-'.$category->id.'-%')->delete();
+ });
+ }
+
+ public function parent()
+ {
+ return $this->belongsTo(self::class, 'parent_id');
+ }
+
+ public function children()
+ {
+ return $this->hasMany(self::class, 'parent_id');
+ }
+
+ public function goods()
+ {
+ return $this->hasMany(Goods::class, 'category_id');
+ }
+
+ public function scopeOrder($q)
+ {
+ return $q->orderBy('sort');
+ }
+}
diff --git a/packages/goods/updates/CreateGoodsTable.php b/packages/goods/updates/CreateGoodsTable.php
index 0c83f4d..020696a 100644
--- a/packages/goods/updates/CreateGoodsTable.php
+++ b/packages/goods/updates/CreateGoodsTable.php
@@ -13,6 +13,7 @@ class CreateGoodsTable extends Migration
*/
public function up()
{
+ $this->down();
Schema::create('goods_category', function (Blueprint $table) {
$table->id();
$table->string('name')->comment('分类名称');
@@ -21,6 +22,7 @@ class CreateGoodsTable extends Migration
$table->unsignedBigInteger('parent_id')->default(0)->comment('父级ID');
$table->unsignedInteger('level')->default(1)->comment('层级');
$table->unsignedInteger('sort')->default(1)->comment('排序 asc');
+ $table->unsignedTinyInteger('is_enable')->default(1)->comment('状态');
$table->string('path')->default('-')->comment('所有的父级ID');
$table->comment('商品分类');
@@ -37,13 +39,11 @@ class CreateGoodsTable extends Migration
$table->text('content')->nullable()->comment('详细');
$table->unsignedInteger('on_sale')->default(0)->comment('是否上架');
$table->unsignedInteger('stock')->default(0)->comment('库存');
- $table->json('weight')->nullable()->comment('重量 {weight: 0, unit: "g"}');
- $table->unsignedInteger('sold_count')->default(0)->comment('实际销量');
+ $table->unsignedInteger('sold_count')->default(0)->comment('销量');
$table->decimal('price', 12, 2)->comment('售价');
$table->json('attr')->nullable()->comment('属性');
$table->json('spec')->nullable()->comment('规格');
$table->json('part')->nullable()->comment('配件');
- $table->string('category_path');
$table->timestamps();
$table->softDeletes();
diff --git a/packages/goods/version.php b/packages/goods/version.php
index 1a623b7..bfc02ed 100644
--- a/packages/goods/version.php
+++ b/packages/goods/version.php
@@ -1,7 +1,7 @@
- [
- 'Initialize extension.',
- ],
-];
+ [
+ 'CreateGoodsTable.php',
+ ],
+];
diff --git a/packages/keywords/updates/KeywordsTableSeeder.php b/packages/keywords/updates/KeywordsTableSeeder.php
new file mode 100644
index 0000000..2a786ce
--- /dev/null
+++ b/packages/keywords/updates/KeywordsTableSeeder.php
@@ -0,0 +1,56 @@
+ ['name' => '字典管理', 'curd' => true]
+ ];
+ // Permission::where('slug', 'like', 'dcat.admin.keywords%')->delete();
+ $this->createPermissionData($permissions);
+ }
+
+ protected function createPermissionData(array $permissions, string $key = '', int $pId = 0)
+ {
+ $curdArr = [
+ 'index' => '列表',
+ 'create' => '新增',
+ 'edit' => '修改',
+ 'destroy' => '删除',
+ 'show' => '详情',
+ ];
+ foreach ($permissions as $slug => $permission) {
+ //是否已存在该权限
+ $slugKey = 'dcat.admin.' . ($key ? $key . '.' . $slug : $slug);
+
+ $pper = Permission::updateOrCreate(['slug' => $slugKey], ['name' => is_string($permission) ? $permission : $permission['name'], 'parent_id' => $pId]);
+
+ if (!is_string($permission)) {
+ if (!isset($permission['children'])) {
+ $permission['children'] = [];
+ }
+ //判断是否默认插入curd权限
+ if (isset($permission['curd']) && $permission['curd']) {
+ if (is_array($permission['curd'])) {
+ $permission['curd'] = array_reverse($permission['curd']);
+ foreach ($permission['curd'] as $value) {
+ $permission['children'] = array_merge([$value => $curdArr[$value]], $permission['children']);
+ }
+ } else {
+ $permission['children'] = array_merge($curdArr, $permission['children']);
+ }
+ }
+
+ if (count($permission['children']) > 0) {
+ $_key = $permission['curd'] !== false ? ($key ? $key . '.' . $slug : $slug) : $key;
+ $this->createPermissionData($permission['children'], $_key ?? $slug, $pper->id);
+ }
+ }
+ }
+ }
+}
diff --git a/packages/keywords/version.php b/packages/keywords/version.php
index b50c47c..8a8e79a 100644
--- a/packages/keywords/version.php
+++ b/packages/keywords/version.php
@@ -2,6 +2,7 @@
return [
'1.0.0' => [
- 'CreateKeywordsTable.php'
+ 'CreateKeywordsTable.php',
+ 'KeywordsTableSeeder.php'
],
];
diff --git a/src/Form/Field.php b/src/Form/Field.php
index c6f9a42..9574cef 100755
--- a/src/Form/Field.php
+++ b/src/Form/Field.php
@@ -134,7 +134,7 @@ class Field implements Renderable
*
* @var array
*/
- protected $attributes = [];
+ protected $attributes = ['autocomplete' => 'off'];
/**
* Parent form.
diff --git a/src/Show/Tools.php b/src/Show/Tools.php
index bcddd89..ebd99c1 100755
--- a/src/Show/Tools.php
+++ b/src/Show/Tools.php
@@ -251,7 +251,7 @@ class Tools implements Renderable
return <<
-
+
{$list}