当前位置: 首页 > news >正文

Fastadmin---快速开发CRUD模块

最近在看 Fastadmin 开发框架,总体来说这个框架还是非常的不错,好的东西就应该学习,以下是总结官方文档的视频教程:

教程地址:

https://www.fastadmin.net/video.html

参考教程:fastadmin一分钟开发一个模块

https://www.bilibili.com/video/BV1MsB7YNES4/?vd_source=eb3f5bb5e0c84a83e0634caa652b7d23

参考文档:

https://www.feige.team/docs/fastadminsource/n6r9in4pt5sm.html

命令行:

https://doc.fastadmin.net/doc/crud.html

具体:参考这个文档能够快速生成模块具备:增删改查、排序、回收站的功能。 

 

第一步:创建表

DROP TABLE IF EXISTS fa_myproject;
CREATE TABLE fa_c1001_project(id INT(8) NOT NULL AUTO_INCREMENT  COMMENT '主键' ,parent INT(8) NOT NULL  DEFAULT 0 COMMENT '父项目' ,name VARCHAR(128) NOT NULL   COMMENT '项目名称' ,code VARCHAR(32) NOT NULL   COMMENT '项目编码' ,pri enum('1','2','3','4')   DEFAULT '1' COMMENT '优先级' ,`beginTime` datetime    COMMENT '开始时间' ,`endTime` datetime    COMMENT '结束时间' ,realBeganTime datetime    COMMENT '实际开始时间' ,realEndTime datetime    COMMENT '实际结束时间' ,grade tinyint(3)    COMMENT '等级' ,`desc` mediumtext    COMMENT '项目描述' ,status enum('wait','doing','closed','suspended','undone')    COMMENT '项目状态:wait=等待,doning=进行中,closed=关闭,suspended=挂起,undone=取消' ,createdBy  VARCHAR(32)   COMMENT '创建人' ,createtime datetime    COMMENT '创建时间' ,updatedBy VARCHAR(32)    COMMENT '更新人' ,updatetime datetime    COMMENT '更新时间' ,deletedBy VARCHAR(255)    COMMENT '删除人' ,deletetime datetime    COMMENT '删除时间' ,deleted enum('0','1')   DEFAULT '0' COMMENT '是否删除:0=否,1=是' ,  weigh INT(8) NOT NULL  DEFAULT 0 COMMENT '排序号' ,PRIMARY KEY (id)
)  COMMENT = '项目';

第二步:根目录执行CRUD命令

php think crud -t myproject -c studycase/myproject -u 1 --force=true

提示:Build Succeeded 则执行成功

参数解释:

// 表示生成myproject表的CRUD
php think crud -t myproject
// 表示生成myproject的控制器在studycase子目录下
-c studycase/myproject
// 表示生成菜单
-u 1 
// 表示覆盖模式
--force=true

相关命令行:

//生成fa_test表的CRUD
php think crud -t test
//生成fa_test表的CRUD且一键生成菜单
php think crud -t test -u 1
//删除fa_test表生成的CRUD
php think crud -t test -d 1
//生成fa_test表的CRUD且控制器生成在二级目录下
php think crud -t test -c mydir/test
//删除fa_test表生成的二级目录的CRUD
php think crud -t test -c mydir/test -d 1
//生成fa_test_log表的CRUD且生成对应的控制器为testlog
php think crud -t test_log -c testlog
//生成fa_test表的CRUD且对应的模型名为testmodel
php think crud -t test -m testmodel
//生成fa_test表的CRUD且生成关联模型category,外链为category_id,关联表主键为id
php think crud -t test -r category -k category_id -p id
//生成fa_test表的CRUD且所有以list或data结尾的字段都生成复选框
php think crud -t test --setcheckboxsuffix=list --setcheckboxsuffix=data
//生成fa_test表的CRUD且所有以image和img结尾的字段都生成图片上传组件
php think crud -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 crud -t test --db=v_phealth_db2

参数介绍:

-t, --table=TABLE                              表名,带不带表前缀均可
-c, --controller[=CONTROLLER]                  生成的控制器名,可选,默认根据表名进行自动解析
-m, --model[=MODEL]                            生成的模型名,可选,默认根据表名进行自动解析
-i, --fields[=FIELDS]                          生成的数据列表中可见的字段,默认是全部
-f, --force[=FORCE]                            是否覆盖模式,如果目标位置已经有对应的控制器或模型会提示
-l, --local[=LOCAL]                            是否本地模型,默认1,置为0时,模型将生成在common模块下
-r, --relation[=RELATION]                      关联模型表名,带不带表前缀均可
-e, --relationmodel[=RELATIONMODEL]            生成的关联模型名,可选,默认根据表名进行自动解析
-k, --relationforeignkey[=RELATIONFOREIGNKEY]  表外键,可选,默认会识别为使用 模型_id 名称
-p, --relationprimarykey[=RELATIONPRIMARYKEY]  关联模型表主键,可选,默认会自动识别
-s, --relationfields[=RELATIONFIELDS]          关联模型表显示的字段,默认是全部
-o, --relationmode[=RELATIONMODE]              关联模型,hasone/belongsto/hasmany [default: "belongsto"](v1.3+ 增加了 hasmany)
-d, --delete[=DELETE]                          删除模式,将删除之前使用CRUD命令生成的相关文件
-u, --menu[=MENU]                              菜单模式,生成CRUD后将继续一键生成菜单
--db[=key]                                     多数据库支持(参数为tp5中配置的数据库key 在application\config.php添加数据库配置信息)
--setcheckboxsuffix[=SETCHECKBOXSUFFIX]    自动生成复选框的字段后缀
--enumradiosuffix[=ENUMRADIOSUFFIX]        自动生成单选框的字段后缀
--imagefield[=IMAGEFIELD]                  自动生成图片上传组件的字段后缀
--filefield[=FILEFIELD]                    自动生成文件上传组件的字段后缀
--intdatesuffix[=INTDATESUFFIX]            自动生成日期组件的字段后缀
--switchsuffix[=SWITCHSUFFIX]              自动生成可选组件的字段后缀
--citysuffix[=CITYSUFFIX]                  自动生成城市选择组件的字段后缀
--selectpagesuffix[=SELECTPAGESUFFIX]      自动生成Selectpage组件的字段后缀
--ignorefields[=IGNOREFIELDS]                 排除的字段
--editorclass[=EDITORCLASS]                自动生成富文本组件的字段后缀
--headingfilterfield[=HEADINGFILTERFIELD]  自动生成筛选过滤选项卡的字段,默认是status字段
--sortfield[=SORTFIELD]                    排序字段

第三步:微调代码

model 文件里修改:修改一行,增加一行,否则自动填充的时间值入库时会报错:

// 自动写入时间戳字段,edit by tonny : integer->datetime
protected $autoWriteTimestamp = 'datetime';
//add by tonny: 生成的代码里增加这个行。
protected $dateFormat = 'Y-m-d H:i:s';

示例:

image

第四步:检测生成的模块功能

刷新就会看到一个“项目”的增删查改功能都已经生成:

image

教程2:

https://www.jianshu.com/p/63cc8673ba9d

实战:

第一步:创建数据库

DROP TABLE IF EXISTS fa_datav;
CREATE TABLE fa_datav(id INT(8) NOT NULL AUTO_INCREMENT  COMMENT '主键' ,name VARCHAR(128) NOT NULL   COMMENT '名称' ,code VARCHAR(32) NOT NULL   COMMENT '编码' ,pri enum('1','2','3','4')   DEFAULT '1' COMMENT '优先级' ,`desc` mediumtext COMMENT '项目描述' ,status enum('wait','doing','closed','suspended','undone')    COMMENT '项目状态:wait=等待,doning=进行中,closed=关闭,suspended=挂起,undone=取消' ,createdBy  VARCHAR(32)   COMMENT '创建人' ,createtime datetime    COMMENT '创建时间' ,updatedBy VARCHAR(32)    COMMENT '更新人' ,updatetime datetime    COMMENT '更新时间' ,deletedBy VARCHAR(255)    COMMENT '删除人' ,deletetime datetime    COMMENT '删除时间' ,deleted enum('0','1')   DEFAULT '0' COMMENT '是否删除:0=否,1=是' ,  weigh INT(8) NOT NULL  DEFAULT 0 COMMENT '排序号' ,PRIMARY KEY (id)
)  COMMENT = '数据大屏';

第二步:命令行执行CURD

php think crud -t datav -c datav/datav -u 1 --force=true

查看执行成功:

image

即可看到生成对应的控制器:

image

模型:

image

验证器:

image

视图:

image

对应的JS文件:Public/assets/js/backend/datav/datav.js 

image

第三步:测试功能

刷新即可看到后台,但是测试【添加】发现报错:

image

调整模型代码:

// 自动写入时间戳字段,edit by tonny : integer->datetime
protected $autoWriteTimestamp = 'datetime';
//add by tonny: 生成的代码里增加这个行。
protected $dateFormat = 'Y-m-d H:i:s';

原来:admin/model/datav/Datav.php

image

修改为:

image

保存后测试添加即正常。

第四步:修改代码

Fastadmin已经为我们写好了基础的增删改查功能,如果需要正对自己的业务进行修改,复制代码然后进行修改。

* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改

打完收工!

http://www.jsqmd.com/news/662783/

相关文章:

  • 别再复制粘贴了!用QCustomPlot在Qt6中绘制第一条平滑曲线的保姆级教程
  • AOP Health数字化转型:用技术赋能罕见病患者诊疗
  • 2026彭州大邑崇州邛崃装修公司年度总评:口碑与实力兼具的本地优选指南 - 推荐官
  • Windows连接Linux主机
  • 郫都区装修公司口碑解析:2026郫县装修公司推荐及市场表现与业主真实反馈全指南 - 推荐官
  • 2025终极指南:Prompt-Engineering-Guide开发环境搭建教程
  • Day05-Java
  • Gemini 3.1 Pro 技术架构深度解析与国内高效访问指南
  • APP官网每个功能单独制作一个页面比全都写在首页更利于搜索收录
  • 别再死记硬背LSTM公式了!用NumPy动画模拟‘我爱北京天安门’的细胞状态更新
  • 2026邛崃装修公司推荐:2026邛崃十大装修公司口碑优选 - 推荐官
  • TypeScript谨慎使用指南:平衡类型安全与开发效率的终极教程
  • 原始3D高斯思路
  • 剪映专业版教程:制作照片滚动效果
  • C# 在工控机中的多任务并发处理技术
  • MyBatis-Plus Samples乐观锁实战:如何解决高并发数据更新冲突
  • 数学建模竞赛避坑指南:线性规划到多目标规划的Lingo与MATLAB混搭技巧
  • 技术迁移中的平台切换与数据转移
  • 工控机与 C# 结合的实时数据处理与显示界面设计
  • 一定要上王者啊!
  • Dubbo-samples异步编程完全解析:提升微服务性能的终极方案
  • 告别调参迷茫:用PyTorch复现DeepLab-v3+在自定义数据集上的完整训练流程(附Cityscapes预训练模型)
  • 成都成华区装修公司2026实力榜推荐:从材料环保到工艺细节的全程保障 - 推荐官
  • SITS2026闭门报告首次解禁(仅限本期读者):AGI引发的就业断层、认知殖民与代际公平危机全景图
  • 20253407 吴家豪 实验二
  • 当GitHub Copilot遇上Prometheus:构建生成-执行-反馈-进化闭环的最后1公里(含可运行K8s Helm Chart)
  • Realsense D435i多相机标定后,如何用Kalibr结果提升你的视觉SLAM精度?
  • 20243405 实验二 《Python程序设计》
  • HWIOAuthBundle性能优化:大规模用户认证的5个最佳实践
  • 【AGI协作革命白皮书】:20年AI架构师亲授人类与通用人工智能协同进化的7大黄金法则