Fastadmin---开发模块
最近学习了很多 fastadmin 的方式,总结下整体的开发思路:
开发文档:
https://doc.fastadmin.net/docs
一、开发插件模式
在开发功能的时候,思路一定是:开发出来功能能够封装为插件被复用,所以首先是创建插件:
php think addon -a datav -c create

通过 http://www.example.com/addons/datav 访问,如果出现这样就说明插件创建成功了,这里访问的是 Datav.php 里面的 Index 方法。
install.sql 数据库文件:
CREATE TABLE `__PREFIX__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') DEFAULT NULL COMMENT '项目状态:wait=等待,doning=进行中,closed=关闭,suspended=挂起,undone=取消', `createdBy` varchar(32) DEFAULT NULL COMMENT '创建人', `createtime` datetime DEFAULT NULL COMMENT '创建时间', `updatedBy` varchar(32) DEFAULT NULL COMMENT '更新人', `updatetime` datetime DEFAULT NULL COMMENT '更新时间', `deletedBy` varchar(255) DEFAULT NULL COMMENT '删除人', `deletetime` datetime DEFAULT NULL COMMENT '删除时间', `deleted` enum('0','1') DEFAULT '0' COMMENT '是否删除:0=否,1=是', `weigh` int(8) NOT NULL DEFAULT '0' COMMENT '排序号', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='数据大屏'
数据库执行该 SQL 文件。
二、创建后台模块
php think crud -t datav -c datav/datav -u 1 --force=true
创建成功:

代码示例:
<?php namespace app\admin\controller\datav; use app\common\controller\Backend; /** * 数据大屏 * @icon fa fa-circle-o */ class Datav extends Backend { /** * Datav模型对象 * @var \app\admin\model\datav\Datav */ protected $model = null; public function _initialize(){ parent::_initialize(); $this->model = new \app\admin\model\datav\Datav; $this->view->assign("priList", $this->model->getPriList()); $this->view->assign("statusList", $this->model->getStatusList()); $this->view->assign("deletedList", $this->model->getDeletedList()); } public function test(){ echo 'test'; } /** * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 */ }
控制器访问:
http://www.fa.com/admins.php/模块/控制器名/控制器方法
示例:
http://www.fa.com/admins.php/datav/datav/test
三、创建前台模块
前台模块手动创建 index/controller/datav/Datav.php

代码示例:
<?php namespace app\index\controller\datav; use app\common\controller\Frontend; /** * 数据大屏 * Class datav */ class Datav extends Frontend { protected $layout = 'default'; protected $noNeedLogin = ['index','test']; protected $noNeedRight = ['*']; public function index(){ echo 'datav index'; } public function test(){ echo 'datav test'; } }
控制器访问:
http://域名/模块/目录.控制器/方法
示例:
http://www.fa.com/index/datav.datav/test
四、API模块
API模块手动创建 api/controller/datav/Datav.php

代码示例:
<?php namespace app\api\controller\datav; use app\common\controller\Api; /** * 首页接口 */ class Datav extends Api { protected $noNeedLogin = ['*']; protected $noNeedRight = ['*']; /** * 首页 */ public function index(){ $this->success('请求成功'); } public function test(){ echo 'api test'; } }
控制器访问:
http://域名/模块/目录.控制器/方法
示例:
http://www.fa.com/api/datav.datav/test
五、封装到插件
1、移动到插件目录
php think addon -a datav -c move
2、打包插件
php think addon -a datav -c package
打包后插件位于:
runtime/addons/datav-1.0.0.zip
六、开发操作
1、查询查询
$count = \app\admin\model\notice\Notice::where('to_id', $user['id']) ->where('platform', 'user') ->where('type','msg') ->order('id', 'desc') ->whereNull('readtime') ->count(); // find(); 查询 paginate(); 分页 $this->assign('list', $list); return $this->view->fetch();
2、更新
$result = \app\admin\model\notice\Notice::where('id', 'in',array_column($list->items(), 'id'))->update(['readtime' => time()]);
3、使用模型方法
use app\admin\model\notice\AdminMptemplate;
$exist = \app\admin\model\notice\AdminMptemplate::where('admin_id', $adminId)->find(); // 调用模型方法 AdminMptemplate::create([ 'admin_id' => $adminId, 'openid' => $openid, 'nickname' => $nickname, 'avatar' => $avatar, 'unionid' => $unionid ]);
4、获取插件配置
$config = get_addon_config('alioss');
5、模型查询
protected $model = null; public function _initialize() { parent::_initialize(); $this->model = new \app\admin\model\notice\AdminMptemplate; } public function list() { $list = $this->model ->with(['admin']) ->where($where) ->order($sort, $order) ->limit($offset, $limit) ->select(); }
打完收工!

浙公网安备 33010602011771号