0


FastAdmin插件开发辅助增强插件

本人开发的FastAdmin插件开发辅助增强插件

不改变官方的开发习惯,但更丝滑,尽最大的努力生成你想要的代码

非常重要 非常重要 非常重要

写在最前面是为了不要漏了,导致插件没有正常工作。

**编写代码都在插件

myaddon

目录下,不管前台还是后台的**

**后台代码

project/addons/myaddon/application

目录下的代码,断点调试需要在

project/application

下找到对应的文件进行断点调试**

使用本插件必须修改配置文件

applicatin/config.php

,位置大概在文件的第295行。

如果不修改,【FastAdmin插件开发辅助增强插件】不能正常工作。应为本插件是为开发环境准备的,所以不用担心性能安全等问题。生产环境不用调整。

//插件纯净模式,插件启用后是否删除插件目录的application、public和assets文件夹//默认是true,生产环境设置为true,开发环境设置false'addon_pure_mode'=>false,

解决了如下问题:

1)开发插件的时候不想分离代码

官方命令行crud生成的代码跟插件分离。开发的时候代码应该在插件包内才友好!代码尽收眼底,结构清晰。

2)约定大于配置

官方命令生成插件命名空间的代码时候,需要给控制器参数添加目录。其实大多数情况都会用插件名称作为目录,好处是不用思考指定的目录代码到底会在哪里?

3)关联模型生产错误代码

官方命令crud设置关联表,希望使用插件命名空间的模型的时候,有时候跟预期不一致,会默认在

app/admin/model

下生成代码,其实期望的是

app/admin/model/插件名称

下生成代码,比如模型。解决关联模型外键匹配模型失败了而生成错误代码的问题。

4)多次关联同一张表,完美配合

hasone

,

belongsto

,

hasmany

完美解决不重复生成关联方法

5)打包插件不想拷贝文件,过滤版本文件.git

插件打包省去了拷贝文件到插件包的问题。生成的代码都在插件的包内。官方的打包没有成功忽略.git

6)开发的时候希望自动完成代码更新

像前端工程师开发nodejs项目的时候一样酷,在命令终端监测代码更新,并及时更新

7) 文件代码已经变更,但是表结构新增了部分字段,还可以用crud吗?

完全可以。这样的情况经常出现。现在用PC端的crud完美解决了。生成代码预览和新旧代码的对比视图。复制你需要的代码到你的ide,是不是有了非一般的感觉。

8) 导出菜单代码

将插件的菜单从数据库导出,并格式成插件的配置代码。如果控制器的action增加或减少,直接编辑选择生成菜单,不用勾选覆盖代码,直接点击保存就会更新菜的功能。再导出型的菜单代码。

9) 支持生成tree列表视图

选择树视图为是,并根据自己关联自己通过pid,设置关联控制器,最后设置关联展示字段只需要设置一个字段用来显示

10) 记录代码覆盖之前的文件

解决不小心覆盖,还可以恢复的机会

如何使用插件

详细的命令参数

php think help addon-crud 
php think help addon-dev

一键生成CRUD(addon-crud)

只比官方多一个参数

增加了一个参数

-A, --addon=addonname 插件名

常见命令

//生成fa_test表的CRUD
php think addon-crud -A mydemo -ttest

//生成fa_test表的CRUD且一键生成菜单
php think addon-crud -A mydemo -ttest-u1

//删除fa_test表生成的CRUD
php think addon-crud -A mydemo -ttest-d1

//生成fa_test表的CRUD且控制器生成在二级目录下
php think addon-crud -A mydemo -ttest-ctest

//删除fa_test表生成的二级目录的CRUD
php think addon-crud -A mydemo -ttest-ctest-d1

//生成fa_test_log表的CRUD且生成对应的控制器为testlog
php think addon-crud -A mydemo -t test_log -c testlog

//生成fa_test表的CRUD且对应的模型名为testmodel
php think addon-crud -A mydemo -ttest-m testmodel

//生成fa_test表的CRUD且生成关联模型category,外链为category_id,关联表主键为id
php think addon-crud -A mydemo -ttest-r category -k category_id -pid

//生成fa_test表的CRUD且所有以list或data结尾的字段都生成复选框
php think addon-crud -A mydemo -ttest--setcheckboxsuffix=list --setcheckboxsuffix=data

//生成fa_test表的CRUD且所有以image和img结尾的字段都生成图片上传组件
php think addon-crud -A mydemo -ttest--imagefield=image --imagefield=img

//关联多个表,参数传递时请按顺序依次传递,支持以下几个参数relation/relationmodel/relationforeignkey/relationprimarykey/relationfields/relationmode
php think crud -ttest--relation=category --relation=admin --relationforeignkey=category_id --relationforeignkey=admin_id

//生成v_phealth_db2数据库下的fa_test表的CRUD
php think addon-crud -A mydemo -ttest--db=v_phealth_db2

一键管理插件(addon-dev)

只比官方多一个行为

-c watch

,比如mydemo插件

本到插件开发,管理插件几乎只需要两个行为就可以了

-c create|watch

常见命令

//创建一个mydemo本地插件,常用于开发自己的插件时使用
php think addon-dev -a mydemo -c create

//刷新插件缓存,如果禁用启用了插件,部分文件需要刷新才会生效
php think addon-dev -a mydemo -c refresh

//卸载本地的example插件
php think addon-dev -a mydemo -c uninstall

//启用本地的example插件
php think addon-dev -a mydemo -cenable

//禁用本地的example插件
php think addon-dev -a mydemo -c disable

//将本地的example插件打包成zip文件
php think addon-dev -a mydemo -c package

//监视代码更新,同步到可访问的目录application
php think addon-dev -a mydemo -cwatch

PS: 可以打卡一个新的终端命令窗口,执行

php think addon-dev -a mydemo -c watch

,来监视插件内的代码,如果有更新,立刻更新代码到application对应的目录,并更新缓存(只有文件更新的时候才执行)

全局排除检查文件和目录

修改

.devignore

文件

/uniapp/
/h5/
/wxapp/
node_modules
.gitingore
info.ini
install.sql
README.md

开发实战

强迫症店铺系统插件开发,两张表,分类表,商品表,关系:

1->n

插件名:

mydemo

分类表

CREATETABLE`fa_mydemo_category`(`id`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT,`name`VARCHAR(128)NOTNULLCOMMENT'名称'COLLATE'utf8mb4_general_ci',PRIMARYKEY(`id`)USINGBTREE)COLLATE='utf8mb4_general_ci'ENGINE=InnoDB;

商品表

CREATETABLE`fa_mydemo_product`(`id`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT,`category_id`INT(10)UNSIGNEDNOTNULLCOMMENT'分类Id',`name`VARCHAR(128)NOTNULLCOMMENT'名称'COLLATE'utf8mb4_general_ci',PRIMARYKEY(`id`)USINGBTREE,INDEX`fk_mydemo_category_product_idx`(`category_id`)USINGBTREE)COLLATE='utf8mb4_general_ci'ENGINE=InnoDB;

生成插件mydemo


php think addon-dev -a mydemo -c create

监听插件变化

新打开一个命令终端,执行如下命令


php think addon-dev -a mydemo -cwatch

懒人模式

1) 生成crud

生成分类管理


php think addon-crud -A mydemo -t mydemo_category -u1

得到以下关键文件

  • addons/mydemo/application/admin/controller/mydemo/MydemoCategory.php
  • addons/mydemo/application/admin/model/mydemo/MydemoCategory.php
  • addons/mydemo/application/admin/validate/mydemo/MydemoCategory.php

路由地址:

mydemo/mydemo_category/index

生成商品管理


php think addon-crud -A mydemo -t mydemo_product -r mydemo_category -k category_id -u1

得到以下关键文件

  • addons/mydemo/application/admin/controller/mydemo/MydemoProduct.php
  • addons/mydemo/application/admin/model/mydemo/MydemoProduct.php
  • addons/mydemo/application/admin/validate/mydemo/MydemoProduct.php

路由地址:

mydemo/mydemo_product/index

2) 分类下拉框代码效果

data-source="mydemo/mydemo_category/index" 
<inputid="c-category_id"data-rule="required"min="0"data-source="mydemo/mydemo_category/index"class="form-control selectpage"name="row[category_id]"type="text"value="">

强迫症模式

最求完美,代码要简洁,包括控制器的名称也必须简洁

1) 生成crud

生成分类管理


php think addon-crud -A mydemo -t mydemo_category -c category -u1

得到以下关键文件

  • addons/mydemo/application/admin/controller/mydemo/Category.php
  • addons/mydemo/application/admin/model/mydemo/MydemoCategory.php
  • addons/mydemo/application/admin/validate/mydemo/MydemoCategory.php

路由地址:

mydemo/category/index

生成商品管理


php think addon-crud -A mydemo -t mydemo_product -c product -r mydemo_category -k category_id -w mydemo/category -u1

得到以下关键文件

  • addons/mydemo/application/admin/controller/mydemo/Product.php
  • addons/mydemo/application/admin/model/mydemo/MydemoProduct.php
  • addons/mydemo/application/admin/validate/mydemo/MydemoProduct.php

路由地址:

mydemo/product/index

2) 分类下拉框代码效果

data-source="mydemo/category/index" 
<inputid="c-category_id"data-rule="required"min="0"data-source="mydemo/category/index"class="form-control selectpage"name="row[category_id]"type="text"value="">

UI模式

最佳的开发的开发体验就应该使用ui模式+命令执行代码监测及时更新代码极速开发。

1、命令行帮助开发者监测代码更新,如果有更新就同步代码到可执行的目录。

2、ui模式完成代码生成。ui模式的好处就是代码生成时安全的。只有开发者确认文件某个具体的文件,才会生成代码。

3、ui模式还可以对比将要生成的代码和本地代码的差异。对比差异、复制对应的代码到源文件。

4、ui模式可以在线预览代码,确认无误在选择生成代码,覆盖旧文件。

5、ui模式绝大部分参数都是跟官方的描述一致。和本插件的命令行参数完全一致。

6、ui模式可以在代码生成菜单重新导出为可用的代码,不用人工补全菜单代码。

UI模式最佳实践

只是为了演示,简单设计两张表,完成旅游路线的起点和终点的管理

建议:name字段的注释不要简单的写

名称

,写成

景点名称

更好,特别是自动生成lang文件的时候。

插件名:

travel

路线景点表

CREATETABLE`fa_travel_spot`(`id`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT,`name`VARCHAR(128)NOTNULLCOMMENT'景点名称'COLLATE'utf8mb4_general_ci',PRIMARYKEY(`id`)USINGBTREE)COLLATE='utf8mb4_general_ci'ENGINE=InnoDB;

路线表

CREATETABLE`fa_travel_line`(`id`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT,`name`VARCHAR(128)NOTNULLCOMMENT'路线名称'COLLATE'utf8mb4_general_ci',`start_spot_id`INT(10)UNSIGNEDNOTNULLCOMMENT'起点景点Id',`end_spot_id`INT(10)UNSIGNEDNOTNULLCOMMENT'终点景点Id',PRIMARYKEY(`id`)USINGBTREE)COLLATE='utf8mb4_general_ci'ENGINE=InnoDB;

生成插件travel


php think addon-dev -a travel -c create

监听插件变化

新打开一个命令终端,执行如下命令


php think addon-dev -a travel -cwatch

以上完成了命令行的任务,接下来就是UI的工作了

UI模式生成景点表单crud

打开ui界面

输入参数
模板名称插件名模型表模型控制器生成菜单删除模式旅行景点traveltravel_spotSpot是否
点击确认保存,此时并没有生成代码也不会生成菜单。
重新打开编辑页面奇迹就出现了。在弹窗的底部就出现了将要生成的代码文件。

  • 点击文件预览代码
  • 点击勾选框,表示要生成指定的代码

随便修改一个文件后,再重新打开编辑页面在底部的该文件会出现对比标签和覆盖的操作。

UI模式生成路线表的crud

路线关联了景点两次,相当于关联了两个模型。多个模型的参数按照数序换行输入对应的参数。

输入参数
模板名称插件名模型表模型控制器生成菜单删除模式旅行路线traveltravel_lineLine是否关联表主表外键关联控制器travel_spot
travel_spotstart_spot_id
end_spot_idtravel/spot
travel/spot
生成代码步骤同上。

新增【关联选项字段】参数

比如我们的

fa_travel_spot

name

字段使用的是其他的名字,比如:

code

。生成旅游路线代码时,需要补上该配置。
关联表code
code

UI模式导出菜单

点击ui页面上的导出菜单按钮即可。

标签: php 数据库 安全

本文转载自: https://blog.csdn.net/weixin_37045384/article/details/128423513
版权归原作者 YII忠实粉 所有, 如有侵权,请联系我们删除。

“FastAdmin插件开发辅助增强插件”的评论:

还没有评论