插件控制器也可分为后台控制器(admin)和前台控制器(home),如果你的插件不需要用到钩子功能而又需要分前后台,还是建议你用模块的方式来开发。
>[danger]在开始插件开发前,一定要了解清楚插件的目录结构。
~~~
/plugins/test/
├─admin 插件后台控制器目录(非必须)
│ ├─Index.php 初始化的默认控制器
├─home 插件前台控制器目录(非必须)
│ ├─Index.php 初始化的默认控制器
├─model 插件模型目录(非必须)
├─sql 模块SQL文件目录(非必须)
│ ├─install.sql 安装SQL文件
│ ├─uninstall.sql 卸载SQL文件
├─validate 验证器目录(非必须)
├─view 插件模板目录(非必须)
│ ├─admin 插件后台模板目录
│ │ ├─index 控制器模板目录(以控制器命名)
│ │ │ ├─index.php 模板文件(示例)
│ ├─home 插件前台模板目录
│ │ ├─index 控制器模板目录(以控制器命名)
│ │ │ ├─index.php 模板文件(示例)
│ ├─widget 插件钩子模板目录
│ │ │ ├─system_hook.php 钩子模板(示例)
├─info.php 插件基本信息
├─menu.php 插件后台管理菜单节点
├─test.php 插件与钩子的实现方法
~~~
## 后台控制器(/plugins/test/admin/)
>[info] 问:什么情况下需要后台控制器?
答:当你的插件需要用到后台管理某些数据的时候,你就可以创建后台控制器来进行数据的管理。
创建Index控制器``/plugins/test/admin/Index.php``,所有插件后台控制器必须继承`` app\common\controller\Common`` 控制器,控制器里面的数据库增删改查、验证等均跟ThinkPHP5完全一样。示例代码如下:
~~~php
<?php
namespace plugins\test\admin;
use app\common\controller\Common;
defined('IN_SYSTEM') or die('Access Denied');
/**
* [测试插件]后台Index控制器
* @package plugins\test\admin
*/
class Index extends Common
{
public function show()
{
$data = [];
$this->assign('data', $data);
return $this->fetch();
}
}
~~~
>[info] 访问地址:/admin.php/admin/plugins/run?_p=test&_c=index&_a=show
参数说明:_p=插件名&_c=控制器名&_a=方法名
## 前台控制器(/plugins/test/home/)
>[info] 问:什么情况下需要前台控制器?
答:当你的插件需要有一个或多个前台展示页面时,就可以通过前台控制器来实现。
创建Index控制器``/plugins/test/home/Index.php``,所有插件前台控制器必须继承`` app\common\controller\Common`` 控制器,控制器里面的数据库增删改查、验证等均跟ThinkPHP5完全一样。示例代码如下:
~~~php
<?php
namespace plugins\test\home;
use app\common\controller\Common;
defined('IN_SYSTEM') or die('Access Denied');
/**
* [测试插件]前台Index控制器
* @package plugins\test\home
*/
class Index extends Common
{
public function detail()
{
$data = [];
$this->assign('data', $data);
return $this->fetch();
}
}
~~~
>[info] 前台控制器访问路径,支持两种路径格式:
>格式1:/plugins/插件名/控制器名/方法名
>格式2:/plugins.php?_p=插件名&_c=控制器名&_a=方法名
- 序言
- 环境配置
- 下载及安装
- 目录结构
- 系统配置
- 多语言
- 命令行(pro版)
- 自动生成模块或插件(build)
- 生成模块
- 生成插件
- 自动生成增删改查(crud)
- 第一步:创建数据表
- 第二步:使用crud指令生成
- 自动生成类库文件(make)
- 生成控制器文件(make:controller)
- 生成模型文件(make:model)
- 生成逻辑文件(make:logic)
- 生成服务文件(make:service)
- 生成验证器文件(make:validate)
- 构建器(pro版)
- 表单构建器(form)
- 表单属性设置
- 添加表单项
- 文本框(text)
- 隐藏域(hidden)
- 密码框(password)
- 文本域(textarea)
- 单文件(file)
- 多文件(files)
- 单图(image)
- 多图(images)
- 开关(switch)
- 单选(radio)
- 多选(checkbox)
- 下拉框(select)
- 标签(tag)
- 日期时间(datetime)
- 颜色选择器(color)
- 富文本编辑器(editor)
- 滑块(slider)
- 评分(rate)
- 穿梭框(transfer)
- 进度条(progress)
- 树形(tree)
- 联动(linkage)
- 自定义html(html)
- 分隔线(line)
- 文字(txt)
- 下拉框增强版(select+)
- 数据表格(table)
- 添加表单分组(group)
- 栅格布局(grid)
- 触发器(trigger)
- 通用上传方法
- 表格构建器(table)
- 表格基础配置
- 添加表头工具栏
- 添加表格筛选
- 页面提示(pageTips)
- 引入 JS 文件
- 引入 CSS 文件
- 渲染额外 JS 代码
- 渲染额外 CSS 代码
- 模块开发
- 1.生成模块
- 2.创建菜单
- 3.创建控制器
- 后台通用方法
- 插件开发
- 1.新建插件
- 2.插件配置
- 3.插件控制器
- 4.插件模板
- 5.插件钩子
- 模板替换变量
- 公共函数库
- 后台通用JS方法
- 常见问题
- 官方模块
- CMS内容管理模块
- 目录结构
- 模板标签
- API接口
- 栏目页/内容页
- 小程序发布
- 官方插件
- 第三方登录
- excel插件
- 万能采集
- 采集规则
- 采集内容