本人开发的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 -t test//生成fa_test表的CRUD且一键生成菜单
php think addon-crud -A mydemo -t test -u 1//删除fa_test表生成的CRUD
php think addon-crud -A mydemo -t test -d 1//生成fa_test表的CRUD且控制器生成在二级目录下
php think addon-crud -A mydemo -t test -c test//删除fa_test表生成的二级目录的CRUD
php think addon-crud -A mydemo -t test -c test -d 1//生成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 -t test -m testmodel//生成fa_test表的CRUD且生成关联模型category,外链为category_id,关联表主键为id
php think addon-crud -A mydemo -t test -r category -k category_id -p id//生成fa_test表的CRUD且所有以list或data结尾的字段都生成复选框
php think addon-crud -A mydemo -t test --setcheckboxsuffix=list --setcheckboxsuffix=data//生成fa_test表的CRUD且所有以image和img结尾的字段都生成图片上传组件
php think addon-crud -A mydemo -t test --imagefield=image --imagefield=img//关联多个表,参数传递时请按顺序依次传递,支持以下几个参数relation/relationmodel/relationforeignkey/relationprimarykey/relationfields/relationmode
php think crud -t test --relation=category --relation=admin --relationforeignkey=category_id --relationforeignkey=admin_id//生成v_phealth_db2数据库下的fa_test表的CRUD
php think addon-crud -A mydemo -t test --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 -c enable//禁用本地的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 -c watch

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

分类表

CREATE TABLE `fa_mydemo_category` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`name` VARCHAR(128) NOT NULL COMMENT '名称' COLLATE 'utf8mb4_general_ci',PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB;

商品表

CREATE TABLE `fa_mydemo_product` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`category_id` INT(10) UNSIGNED NOT NULL COMMENT '分类Id',`name` VARCHAR(128) NOT NULL COMMENT '名称' COLLATE 'utf8mb4_general_ci',PRIMARY KEY (`id`) USING BTREE,INDEX `fk_mydemo_category_product_idx` (`category_id`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB;

生成插件mydemo


php think addon-dev -a mydemo -c create

监听插件变化

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


php think addon-dev -a mydemo -c watch

懒人模式

1) 生成crud

生成分类管理


php think addon-crud -A mydemo -t mydemo_category -u 1

得到以下关键文件

  • 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 -u 1

得到以下关键文件

  • 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"

<input id="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 -u 1

得到以下关键文件

  • 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 -u 1

得到以下关键文件

  • 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"

<input id="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

路线景点表

CREATE TABLE `fa_travel_spot` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`name` VARCHAR(128) NOT NULL COMMENT '景点名称' COLLATE 'utf8mb4_general_ci',PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB;

路线表

CREATE TABLE `fa_travel_line` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`name` VARCHAR(128) NOT NULL COMMENT '路线名称' COLLATE 'utf8mb4_general_ci',`start_spot_id` INT(10) UNSIGNED NOT NULL COMMENT '起点景点Id',`end_spot_id` INT(10) UNSIGNED NOT NULL COMMENT '终点景点Id',PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB;

生成插件travel


php think addon-dev -a travel -c create

监听插件变化

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


php think addon-dev -a travel -c watch

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

UI模式生成景点表单crud

打开ui界面

输入参数

模板名称 插件名 模型表 模型控制器 生成菜单 删除模式
旅行景点 travel travel_spot Spot

点击确认保存,此时并没有生成代码也不会生成菜单。
重新打开编辑页面奇迹就出现了。在弹窗的底部就出现了将要生成的代码文件。

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

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

UI模式生成路线表的crud

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

输入参数

模板名称 插件名 模型表 模型控制器 生成菜单 删除模式
旅行路线 travel travel_line Line
关联表 主表外键 关联控制器
travel_spot
travel_spot
start_spot_id
end_spot_id
travel/spot
travel/spot

生成代码步骤同上。

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

比如我们的fa_travel_spotname字段使用的是其他的名字,比如:code。生成旅游路线代码时,需要补上该配置。

关联表
code
code

UI模式导出菜单

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

FastAdmin插件开发辅助增强插件相关推荐

  1. 帝国cms后台模板编辑器辅助增强插件代码高亮格式化显示

    先来看一下效果图 使用方式: 此工具是安装在基于webkit内核的浏览器里面,可适用于谷歌,qq浏览器,360浏览器等. 激活方式: 使后台模板编辑器获得焦点,然后同时按住:Alt+win即可激活. ...

  2. 视频教程-FastAdmin插件开发入门-PHP

    FastAdmin插件开发入门 2009年4月创办 淄博日诺网络科技有限公司 法人总经理 2016年负责 中国传媒大学凤凰学院 网站开发 项目负责人 2017年 参与负责 用友软件理财项目开发 郭孟涛 ...

  3. Fastadmin插件开发流程简要记录

    Fastadmin插件开发简易流程 Step1 使用命令行创建插件 Step2 更改插件信息 Step3 编辑插件相关数据库脚本 Step3 编辑插件的配置 Step4 为插件配置后台管理菜单 Ste ...

  4. php 评论插件,Typecho评论增强插件:TeComment(2017.09.07更新)

    TeComment(2017.09.07更新) Typecho 评论增强插件,可为Typecho评论增加评论工具栏.实现评论列表异步加载以及Ajax提交评论功能 插件地址:TeComment 1.安装 ...

  5. camera tweak android,苹果iPhone相机大提升 CameraTweak2超强大的拍照增强插件

    CameraTweak 是一款可以为您的iPhone带来各种拍照新功能,比如倒时定时器.曝光和聚焦的独立标线.定时拍摄等功能.用户安装CameraTweak 之后不用进行任何设置,进入相机应用你就会发 ...

  6. html5拖动的面板 panel,基于jQuery UI的Bootstrap Panel面板功能增强插件

    LobiPanel是一款基于jQuery UI的Bootstrap Panel面板功能增强插件.通过该插件可以为Bootstrap的原生Panel面板增加编辑标题,最大化,最小化,面板拖动关闭面板等功 ...

  7. mysql密码加强_MySQL密码增强插件

    介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺便将方法写下来.首先该功能 ...

  8. mysql反模式_myfat: MyFat是MyBatis的DAO功能增强插件

    MyFat让MyBatis更胖 简介 | Intro MyFat是MyBatis的DAO功能增强插件,利用全功能持久层工具jSqlBox来补足MyBatis缺少的功能.MyFat需Java8或以上. ...

  9. animate inater插件_Indesign十款功能增强插件合集(Indesign功能增强插件)V1.0 正式版...

    Indesign十款功能增强插件合集(Indesign功能增强插件)是一款非常优秀好用的针对Indesign用户推出的增强部分功能的插件.小编带来的这款Indesign十款功能增强插件合集功能强大全面 ...

最新文章

  1. python中的time库安装步骤-python中time库的实例使用方法
  2. mysql中depart_mysql 学习笔记
  3. linux自动获取ip网卡配置文件,linux 命令行下配置网卡自动获取 IP
  4. javaScript学习笔记之比较运算符||逻辑运算符||条件运算符(三目运算符)
  5. python中的序列类型数据结构元素的切片操作_浅析python中的分片与截断序列
  6. Qmail 邮件系统维护管理技术文档
  7. linux 两台linux服务器想共享一个磁盘分区
  8. 标准电阻阻值速查表及由来
  9. 转载:王垠·程序员的心理疾病
  10. kernel: kmalloc
  11. Java会被禁吗_关于java:如果字符串对象被禁闭,那么为什么一个更改不会影响其他对象...
  12. 转个有意思的东西: 脑残体全论(2007-08-20 13:48)
  13. 关于密码学古典加密——仿射加密一些问题
  14. 60帧的丝般顺畅 - QQ飞车手游优化点滴
  15. 外贸、财务相关名词解释
  16. 知识图谱入门——认识知识图谱
  17. TCPMP编译方法(转载)
  18. 【思维风暴】算法迭代和递归的理解
  19. Liang-Barsky直线段裁剪算法-C++实现(计算机图形学作业)
  20. hmmlearn 的MultinomialHMM 的观察序列

热门文章

  1. configure: error: cannot guess build type; you must specify解决方案
  2. 慕课笔记:jQuery(一)——样式篇
  3. XFTP下面如何查看隐藏文件?
  4. 大牧絮叨设计模式:抽象工厂模式
  5. 模拟模拟交易系统(二)——系统设计
  6. JavaScript范围和超级马里奥
  7. php图书查询显示,php根据isbn书号查询amazon网站上的图书信息的示例_PHP
  8. wordpress企业外贸商城主题 html5网站模板带后台源码 云典the7.7
  9. MEID简介 ESN
  10. 解决Microsoft 365和Visio冲突问题