热搜词
发表于 2022-5-21 11:42:18 | 显示全部楼层 |阅读模式
ThinkPHP5.0完全开发手册:
https://www.kancloud.cn/manual/thinkphp5

fastadmin插件开发文档:
https://www.kancloud.cn/mrleehao/fastadmin/1590844

FastAdmin可以通过命令行创建一个插件,首先我们将工作目录定位到我们的项目根目录,也就是think文件所在的目录。

cd /var/www/yoursite/
然后我们在命令行输入

php think addon -a mydemo -c create
即可通过命令行创建一个标识为mydemo的插件,此时我们的addons目录下就出现了一个新的文件夹,文件夹包含基础的插件必备文件,如图:

mydemo
├── Mydemo.php
├── config.php
├── controller
│   └── Index.php
└── info.ini
目录结构
FastAdmin所有插件都是存放在addons目录,一个插件一个目录,目录名必须和插件标识相同,且全部为小写,不允许出现大写或下划线等特殊符号。

mydemo //插件标识
├── application    //此文件夹中所有文件会覆盖到根目录的/application文件夹
├── assets        //此文件夹中所有文件会复制到/public/assets/addons/blog文件夹
├── controller    //此文件夹为插件控制器目录
├── lang            //此文件夹为插件语言包目录
├── model            //此文件夹为插件模型目录
├── public        //此文件夹中所有文件会覆盖到根目录的/public文件夹
├── view            //此文件夹为插件视图目录
├── Mydemo.php        //此文件为插件核心安装卸载控制器,必需存在
├── bootstrap.js    //此文件为插件JS启动文件
├── LICENSE        //版权文件
├── config.php    //插件配置文件,我们在后台插件管理中点配置按钮时配置的文件,必需存在
├── info.ini        //插件信息文件,用于保存插件基本信息,插件开启状态等,必需存在
└── install.sql    //插件数据库安装文件,此文件仅在插件安装时会进行导入


其中的application和public文件夹会覆盖到根目录,这两个文件夹主要用于我们后台管理功能的开发,我们可以先在后台开发好对应的管理功能后,再将对应的功能打包进插件即可,FastAdmin在插件安装和卸载时会自动进行文件冲突检测,如果遇到冲突的文件会提醒用户是否进行覆盖或删除。

assets这个文件夹很关键,FastAdmin会将assets中的所有文件夹和文件复制到/public/assets/addons/插件标识/文件夹中去,assets文件夹中的所有文件不会进行文件冲突检测,/public/assets/addons/插件标识/这个目录下的文件,我们在视图文件中可以直接通过__ADDON__指向这个路径。因此在开发视图时我们可以先使用相对路径设计,完成后我们再统一加上这个__ADDON__的前缀

controller、lang、model和view这四个文件夹是我们插件前台功能的MVC部分,这部分文件夹不会复制或移动到其它位置。

Mydemo.php这个文件是插件的核心文件,我们可以在这个文件中编写插件安装或卸载时执行的脚本,或者在此插件中编写菜单的生成或删除,同时插件的行为方法也是编写在此文件中的,插件所支持的行为事件会在后面讲到。此文件命令规则为插件标识首字母大写。

bootstrap.js这个文件是插件的启动文件,插件在安装完启用后,FastAdmin会将此文件中的内容合并到/public/assets/js/addons.js中去,你可以在此编写插件核心JS或注册事件,在此JS中可以使用require依赖其它模块。同时在此插件中可以使用Fast、Backend、Lang等全局对象,因为在此之前此类对象已经加载且注册。

config.php这个文件是插件的配置文件,我们在后台插件管理中点配置按钮时会保存在此文件,此文件的内容格式为:

# 控制器

FastAdmin插件中的控制器和ThinkPHP5的控制器类似,请查看 ThinkPHP5 控制器`章节

请参考:[https://www.kancloud.cn/manual/thinkphp5/118047](https://www.kancloud.cn/manual/thinkphp5/118047)

## 特别提醒

FastAdmin插件控制器和ThinkPHP5控制器不同之处主要有以下几点

1. 基类不同

~~~

插件控制器基类为:\think\addons\Controller

ThinkPHP5控制器基类为:\think\Controller

~~~

1. 请求URL不同

~~~

插件控制器请求方法为:http://www.fa.com/addons/mydemo/控制器名/方法

ThinkPHP5控制器请求方法为:http://www.fa.com/模块名/控制器名/方法

~~~

1. 当使用层级控制器时

~~~

插件控制器请求方法为:http://www.fa.com/addons/mydemo/目录名.控制器名/方法

ThinkPHP5控制器请求方法为:http://www.fa.com/模块名/目录名.控制器名/方法

~~~

插件控制器必须继承`\think\addons\Controller`这个基类控制器。

## 控制器定义

一个典型的控制器代码如下:

~~~

namespace addons\mydemo\controller;

use think\addons\Controller;

class Index extends Controller

{
public function index()

{
$this->error("当前插件暂无前台页面");

}

}

~~~

其文件位置位于`addons/mydemo/Index.php`。

## 控制器请求

~~~

http://www.fa.com/addons/mydemo/控制器名/控制器方法

~~~

## 基类控制器

FastAdmin的基类控制器`\think\addons\Controller`位于`vendor/karsonzhang/fastadmin-addons/src/addons/Controller.php`。

基类控制器是FastAdmin插件系统的一部分,在基类控制器进行了一系列的操作,包括插件控制器权限检查、语言包加载、布局设定、配置加载等操作。

同时基类控制器也是继承自`\think\Controller`,此控制器基类是ThinkPHP5自带的基类控制器,因此也可以实现绝大多数ThinkPHP5官方文档`控制器`章节的功能。

## 基类属性

~~~

protected $addon = null; //插件名称

protected $controller = null; //控制器名称

protected $action = null; //方法名称

/**

* 无需登录的方法,同时也就不需要鉴权了

* @var array

*/

protected $noNeedLogin = ['*'];

/**

* 无需鉴权的方法,但需要登录

* @var array

*/

protected $noNeedRight = ['*'];

/**

* 权限Auth,如果用户是登录太,可以直接从中读取用户信息

* @var Auth

*/

protected $auth = null;

/**

* 布局模板,默认不启用

* @var string

*/

protected $layout = null;

~~~


全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-9-28 06:57 , Processed in 0.167806 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team