参考链接:https://doc.fastadmin.net/docs/index.html
虚拟域名要在安装项目数据库以前配置。
命令安装项目
强烈建议使用命令行安装,因为采用命令行安装的方式可以和 FastAdmin 随时保持更新同步。使用命令行安装要准备好 Git、Node.js、Composer、Bower 环境。
- 安装 Git for Windows;
- 安装 Node.js 与 cnpm,执行
cnpm install bower -g
- 复制 php.exe 所在的目录路径追加到环境变量;
- 安装 composer;
- 下载 composer.phar:
php -r "copy('https://install.phpcomposer.com/installer','composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
- 创建 composer.bat 文件:
echo @php "%~dp0composer.phar" %*>composer.bat
- 修改 composer 全局配置:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
- 到网站根目录,拉取项目代码:
git clone https://gitee.com/karson/fastadmin.git
- 进入fastadmin目录,执行:
composer install
bower install
如果 bower install
执行失败,则重试运行。
- 最后运行项目的 public 目录自动安装数据库。
命令生成数据表的CRUD(包括控制器、模型、视图、JS、语言包、菜单等)
前提:数据库中已有按规则创建的数据表(在生成CRUD时会根据字段属性、字段注释、表注释自动生成语言包、组件和排版)。具体规则见下面数据库说明。
- 生成 fa_test 表的CRUD,会生成对应的控制器、模型、视图,不会生成菜单:
php think crud -t test
- 生成 fa_test_log 表的CRUD且生成对应的控制器为 testlog:
php think crud -t test_log -c testlog
- 生成CRUD时关联多表(具体字段规则见下面数据库说明):
php think crud -t test --relation=category --relation=admin --relationforeignkey=category_id --relationforeignkey=admin_id
- 生成 test 控制器的权限菜单:
php think menu -c test
- 生成 fa_test 表的CRUD且一键生成菜单(合并两步):
php think crud -t test -u 1
- 强制(重新)生成 fa_test 表的CRUD且一键生成菜单:
php think crud -t test -u 1 --force=true
- 一键全部重新生成所有控制器的权限菜单:
php think menu -c all-controller
- 删除 fa_test 表生成的CRUD,会删除对应的控制器、模型、视图,不会删除菜单:
php think crud -t test -d 1
- 删除 test 控制器生成的菜单:
php think menu -c test -d 1
查看CRUD一键生成的参数:php think crud --help
,查看权限菜单的参数:php think menu --help
管理插件
从 FastAdmin 安装已有插件
- 安装:点击“插件管理”,点击“免费”选项卡,找到“每日签到”,点击最右边的“安装”,安装完毕后,页面左侧菜单栏会多出一项“签到管理”,此时数据库内页多出一个表
fa_leesign
。 - 移除:“插件管理”的“本地插件”页面有“每日签到”这一项,点击“状态”开关将其关闭,然后点击“卸载”,最后删除数据库
fa_leesign
。
一键管理插件
- 创建一个 myaddon 本地插件,用于开发自己的插件时使用,生成在根目录的 addons 目录:
php think addon -a myaddon -c create
- 刷新插件缓存,如果禁用启用了插件,部分文件需要刷新才会生效:
php think addon -a myaddon -c refresh
- 安装 myaddon 插件:
php think addon -a myaddon -c install
- 卸载 myaddon 插件:
php think addon -a myaddon -c uninstall --force=true
- 启用本地的 myaddon 插件:
php think addon -a myaddon -c enable
- 禁用本地的 myaddon 插件:
php think addon -a myaddon -c disable
目录结构
FastAdmin项目目录
├── addons //插件存放目录
├── application //应用目录
│ ├── admin //后台管理应用模块
│ ├── api //API应用模块
│ ├── common //通用应用模块
│ ├── extra //扩展配置目录
│ ├── index //前台应用模块
│ ├── build.php
│ ├── command.php //命令行配置
│ ├── common.php //通用辅助函数
│ ├── config.php //基础配置
│ ├── database.php //数据库配置
│ ├── route.php //路由配置
│ ├── tags.php //行为配置
├── extend
│ └── fast //FastAdmin扩展辅助类目录
├── public
│ ├── assets
│ │ ├── build //打包JS、CSS的资源目录
│ │ ├── css //CSS样式目录
│ │ ├── fonts //字体目录
│ │ ├── img
│ │ ├── js
│ │ │ ├── backend
│ │ │ └── frontend //后台功能模块JS文件存放目录
│ │ ├── libs //Bower资源包位置
│ │ └── less //Less资源目录
│ └── uploads //上传文件目录
│ ├── index.php //应用入口主文件
│ ├── install.php //FastAdmin安装引导
│ ├── admin.php //后台入口文件,强烈建议修改
│ ├── robots.txt
│ └── router.php
├── runtime //缓存目录
├── thinkphp //ThinkPHP5框架核心目录
├── vendor //Compposer资源包位置
├── .bowerrc //Bower目录配置文件
├── LICENSE
├── README.md
├── bower.json //Bower前端包配置
├── build.php
├── composer.json //Composer包配置
└── think
├── application
│ └── admin
│ ├── controller
│ │ └── Test.php //控制器类
│ ├── lang
│ │ ├── zh-cn
│ │ │ └── test.php //功能语言包,按需加载
│ │ └── zh-cn.php //后台语言包,默认加载
│ ├── model
│ │ └── Test.php //模型类
│ ├── validate
│ │ └── Test.php //验证器类
│ └── view
│ └── test
│ ├── index.html //列表视图
│ ├── add.html //添加视图
│ └── edit.html //编辑视图
└── public
└── assets
└── js
└── backend
└── test.js //功能模块JS文件
控制器
application/common/controller/Api.php //API接口基类控制器
application/common/controller/Backend.php //后台基类控制器
application/common/controller/Frontend.php //前台基类控制器,功能和 Backend.php 类似
- 后台控制器的 index/add/edit/del/multi/recyclebin/destroy/restore/import/selectpage 全都是可选的方法,基类的这些方法使用 traits 进行引入,具体位置在
application/admin/library/traits/Backend.php
。 - 默认生成的控制器所继承的父类中有 index/add/edit/del/multi/destroy/restore/recyclebin 八个方法,因此在当前控制器中可不用编写增删改查的代码。
- 如果需要自己控制这部分逻辑,需要将
application/admin/library/traits/Backend.php
中对应的方法复制到当前控制器,然后进行修改。
数据库的设计规则
CREATE TABLE `fa_test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`admin_id` int(10) NOT NULL DEFAULT '0' COMMENT '管理员ID',
`category_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID(单选)',
`category_ids` varchar(100) NOT NULL COMMENT '分类ID(多选)',
`week` enum('monday','tuesday','wednesday') NOT NULL COMMENT '星期(单选):monday=星期一,tuesday=星期二,wednesday=星期三',
`flag` set('hot','index','recommend') NOT NULL DEFAULT '' COMMENT '标志(多选):hot=热门,index=首页,recommend=推荐',
`genderdata` enum('male','female') NOT NULL DEFAULT 'male' COMMENT '性别(单选):male=男,female=女',
`hobbydata` set('music','reading','swimming') NOT NULL COMMENT '爱好(多选):music=音乐,reading=读书,swimming=游泳',
`title` varchar(50) NOT NULL DEFAULT '' COMMENT '标题',
`content` text NOT NULL COMMENT '内容',
`image` varchar(100) NOT NULL DEFAULT '' COMMENT '图片',
`images` varchar(1500) NOT NULL DEFAULT '' COMMENT '图片组',
`attachfile` varchar(100) NOT NULL DEFAULT '' COMMENT '附件',
`keywords` varchar(100) NOT NULL DEFAULT '' COMMENT '关键字',
`description` varchar(255) NOT NULL DEFAULT '' COMMENT '描述',
`city` varchar(100) NOT NULL DEFAULT '' COMMENT '省市',
`price` float(10,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '价格',
`views` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '点击',
`startdate` date DEFAULT NULL COMMENT '开始日期',
`activitytime` datetime DEFAULT NULL COMMENT '活动时间(datetime)',
`year` year(4) DEFAULT NULL COMMENT '年',
`times` time DEFAULT NULL COMMENT '时间',
`refreshtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '刷新时间(int)',
`createtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
`updatetime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
`weigh` int(10) NOT NULL DEFAULT '0' COMMENT '权重',
`switch` tinyint(1) NOT NULL DEFAULT '0' COMMENT '开关',
`status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态',
`state` enum('0','1','2') NOT NULL DEFAULT '1' COMMENT '状态值:0=禁用,1=正常,2=推荐',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='测试表'
根据字段类型
类型 | 备注 | 类型说明 |
---|---|---|
int | 整形 | 自动生成type为number的文本框,步长为1 |
enum | 枚举型 | 自动生成单选下拉列表框 |
set | set型 | 自动生成多选下拉列表框 |
float | 浮点型 | 自动生成type为number的文本框,步长根据小数点位数生成 |
text | 文本型 | 自动生成textarea文本框 |
datetime | 日期时间 | 自动生成日期时间的组件 |
date | 日期型 | 自动生成日期型的组件 |
timestamp | 时间戳 | 自动生成日期时间的组件 |
特殊字段
字段 | 字段名称 | 字段类型 | 字段说明 |
---|---|---|---|
category_id | 分类ID | int | 将生成选择分类的下拉框,分类类型根据去掉前缀的表名,单选 |
category_ids | 多选分类ID | varchar | 将生成选择分类的下拉框,分类类型根据去掉前缀的表名,多选 |
weigh | 权重 | int | 后台的排序字段,如果存在该字段将出现排序按钮,可上下拖动进行排序 |
createtime | 创建时间 | int | 记录添加时间字段,不需要手动维护 |
updatetime | 更新时间 | int | 记录更新时间的字段,不需要手动维护 |
以特殊字符结尾的规则
结尾字符 | 示例 | 类型要求 | 字段说明 |
---|---|---|---|
time | refreshtime | int | 识别为日期时间型数据,自动创建选择时间的组件 |
image | smallimage | varchar | 识别为图片文件,自动生成可上传图片的组件,单图 |
images | smallimages | varchar | 识别为图片文件,自动生成可上传图片的组件,多图 |
file | attachfile | varchar | 识别为普通文件,自动生成可上传文件的组件,单文件 |
files | attachfiles | varchar | 识别为普通文件,自动生成可上传文件的组件,多文件 |
avatar | miniavatar | varchar | 识别为头像,自动生成可上传图片的组件,单图 |
avatars | miniavatars | varchar | 识别为头像,自动生成可上传图片的组件,多图 |
content | maincontent | text | 识别为内容,自动生成富文本编辑器(需安装富文本插件) |
_id | user_id | int/varchar | 识别为关联字段,自动生成可自动完成的文本框,单选 |
_ids | user_ids | varchar | 识别为关联字段,自动生成可自动完成的文本框,多选 |
list | timelist | enum | 识别为列表字段,自动生成单选下拉列表 |
list | timelist | set | 识别为列表字段,自动生成多选下拉列表 |
data | hobbydata | enum | 识别为选项字段,自动生成单选框 |
data | hobbydata | set | 识别为选项字段,自动生成复选框 |
switch | siteswitch | tinyint | 识别为开头字段,自动生成开头组件 |
注释说明
字段 | 注释内容 | 字段类型 | 字段说明 |
---|---|---|---|
status | 状态 | int | 将生成普通语言包和普通文本框 |
status | 状态 | int | 将生成普通语言包和普通文本框 |
status | 状态 | enum(‘0’,’1’,’2’) | 将生成普通语言包和单选下拉列表 |
status | 状态:0=隐藏,1=正常,2=推荐 | enum(‘0’,’1’,’2’) | 将生成多个语言包和单选下拉列表,且列表中的值显示为对应的文字 |
常见问题
- 表结构发生变化:如果使用 php think crud 生成过表的 CRUD,当修改了表结构类型或新增了字段,此时只有重新生成 CRUD 或自己手动修改视图文件和JS文件。
- 生成关联模型:建议你在设计表时遵循以下规范,category_id 字段关联对应 fa_category 表主键,company_info_id 关联对应 fa_company_info 表主键。
- 如果字段名为 user_id,生成的动态下拉列表会自动匹配 user/index 这个控制器方法,如果你发现CRUD后无法显示关联数据列表,请检查视图中元素 data-source 的值是否正确。
其他功能
- 启用二级菜单功能:找到 application/config.php 文件最下方有个 multiplenav 配置,默认是 false,如果需要启用,请将 multiplenav 置为 true 即可。启用后,菜单规则中的第一级将作为一级菜单显示在顶部。我们可以在权限管理->菜单规则中额外添加一级菜单,然后再重新规划我们的菜单。
问题
- 删除命令不能删除在二级目录下生成的控制器和视图。
- 打包命令
php think min -m all -r all
(已修改 application\admin\command\Min.php 的 $nodeExec 值),打包完后找不到 build 目录。 - 一键生成 API 文档生成后的位置。