Fastadmin---开发模块

最近学习了很多 fastadmin 的方式,总结下整体的开发思路:

开发文档:

https://doc.fastadmin.net/docs

一、开发插件模式

在开发功能的时候,思路一定是:开发出来功能能够封装为插件被复用,所以首先是创建插件:

php think addon -a datav -c create

image

通过 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

创建成功:

image

代码示例:

<?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

image

代码示例:

<?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

image

代码示例:

<?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();
}

打完收工!

posted @ 2026-04-19 20:28  帅到要去报警  阅读(10)  评论(0)    收藏  举报