## 插件控制器
插件除了基于前台与后台外,还可以作为独立的模块。创建控制器后即可赋予插件前台访问功能。
## 创建控制器
控制器放在`controller`文件夹下,以`demo`插件为例,创建首页控制器,路径为:addons/demo/controller/Index.php,如下图
![](https://img.kancloud.cn/8c/c7/8cc77f51bb2a94ca11905d43e3272c7c_308x128.png)
Index.php 代码
~~~
<?php
namespace addons\demo\controller;
use think\addons\Controller;
class Index extends Controller
{
public function index()
{
return '首页';
}
}
~~~
浏览器访问地址格式:http://网址/addons/插件名称/控制器名/操作方法
如上`demo `插件,那么首页控制器访问如下,没写控制器那么访问的是`Index`控制器,操作方法默认是`index`
http://网址/addons/demo/index/index
首页默认是Index,操作方法index,那么可以省略,如下即可直接访问到
http://网址/addons/demo/
## 基类控制器
创建的控制器继承`think\addons\Controller`基类,文件位置在:vendor/hkcms/cms-addons/src/addons/Controller.php
继承之后有以下属性、方法可以调用,你可根据自己的需要重写某些属性、方法
| 属性名 | 说明 | 使用说明 |
| --- | --- | --- |
| $error_tmpl | 错误页 | 默认是插件视图根目录下的error.html,参考app/common/tpl/error.html |
| $success_tmpl | 成功页 | 同上,只有使用error方法或success方法时有效 |
| $app | 容器变量 | 有路由、配置、路由等实例对象,更多了解:https://www.kancloud.cn/manual/thinkphp6_0/1037489 |
| $request | 请求对象 | 用于获取请求的信息,更多了解:https://www.kancloud.cn/manual/thinkphp6_0/1037518 |
| $name | 插件标识名称 | |
| $addon_path | 当前插件根路径 | |
| $cache | 缓存 | 更多了解:https://www.kancloud.cn/manual/thinkphp6_0/1037634 |
| $site | 站点配置数组 | 即后台站点配置,$this-site['title'] 获取网站名称 |
**控制器方法**
1. `error`方法,输出错误信息,如果是ajax请求则返回的是json数据。如果不是ajax确保视图目录下有error.html文件,你可通过$error_tmpl来指定位置,只能是视图目录下。
~~~
// 在控制器里面使用
public function test()
{
$this->error('出错了');
}
// $msg 提示信息
// $url = 跳转地址
// $data = 返回的数据
// $wait = 等待几秒后跳转,默认3秒
// $header = 头部信息
$this->error($msg, $url, $data,$wait, $header)
~~~
2. `success`方法,输出正确提示信息,同上一样。
3. `result` 方法返回指定的数据类型,例如json、xml,默认是json,常用于接口。
~~~
public function test()
{
$this->result('操作成功',['lists'=>[]],200, 'json');
}
~~~
~~~
/**
* $msg 提示信息
* $data 要返回的数据
* $code 返回的code
* $type 返回数据格式
* $header 发送的Header信息
*/
$this->result($msg = '', $data = [], $code = 200, $type = 'json', array $header = [])
~~~
4. `fetch`加载模板页面方法
如下,参数一填写模板位置,位置是基于插件视图为基准,另外如果为空默认以当前控制器/操作方法方式找到模板位置。参数二为模板变量参数
~~~
/**
* $template 模板文件名
* $vars 模板输出变量
*/
$this->fetch($template = '', $vars = [])
~~~
以demo插件为例,以下是Index控制器加载模板,参数没有填写那么加载的模板路径为:addons/demo/view/index/test.html
~~~
public function test()
{
return $this->fetch();
}
~~~
加载其他模板,路径为:addons/demo/view/test/index.html
~~~
public function test()
{
return $this->fetch('test/index');
}
~~~
5. `display`渲染模板内容
与fetch方法不同的是,fetch方法时获取传入的文件位置,display方法是直接传入字符串渲染。
~~~
/**
* @param string $content 模板内容
* @param array $vars 模板输出变量
*/
$this->display($content = '', $vars = [])
~~~
示例
~~~
public function test()
{
$html = '<a>{$test}</a>';
return $this->display($html, ['test'=>111]);
}
~~~
6. `assign`模板变量赋值方法
~~~
/**
* @param mixed $name 要显示的模板变量
* @param mixed $value 变量的值
*/
$this->assign($name, $value = '')
~~~
示例:如下,这样定义好后,在模板页面写入{$txt}即可。
~~~
public function test()
{
$txt = '测试';
$this->assign('txt', $txt);
return $this->fetch();
}
~~~
7. `getInfo`获取插件信息
~~~
public function test()
{
$ini = $this->getInfo();
dump($ini);
}
~~~
8. `getConfig`获取插件配置
true = 获取完整配置,即返回config.php里面的完整数组,false 仅获取键值。
```
/**
* @param bool $type 是否获取完整配置
*/
$this->getConfig($type = false)
```
示例
~~~
public function test()
{
$config = $this->getConfig();
dump($config);
}
~~~
可参考内容:
[插件内置函数](%E6%8F%92%E4%BB%B6%E5%86%85%E7%BD%AE%E5%87%BD%E6%95%B0.md)
- 简介
- 下载与安装配置
- 下载
- 虚拟主机安装
- 虚拟主机必读
- 百度云虚拟主机
- 创业云虚拟主机
- Linux下宝塔安装
- 宝塔一键部署
- Windows下宝塔安装
- phpEnv下安装
- phpStudy下安装
- 伪静态(url重写)
- 安装系统
- 调试模式与env文件
- 重新安装与安装文件说明
- 后台使用帮助
- 后台入口文件
- 首页面板
- 配置中心
- 站点配置
- 邮件配置
- 附件配置
- 应用中心配置
- 前台URL规则配置
- SEO设置
- SEO设置-静态生成
- 文档属性
- 站点模块
- V2.2.2版本 -
- V2.2.3版本 +
- 模型管理
- 栏目管理
- 字段类型与组件
- 前言
- 前端组件
- 动态下拉(selectpage)
- 验证规则
- text 单行文本
- textarea 多行文本
- radio 单选
- checkbox 复选
- select 下拉列表
- selects下拉列表(多)
- selectpage 动态下拉
- editor编辑器
- image图片
- images图片(多)
- number数字
- date日期
- datetime日期和时间
- downfile文件上传
- downfiles文件上传(多)
- array 数组(键值对)
- 内容管理
- 自定义URL
- 多语言
- 界面多语言
- 内容多语言
- 多语言URL地址
- 附件管理
- 应用中心
- 标签语法
- 标签使用必读
- 列表标签
- content 内容列表标签
- contentpage 内容列表分页
- wfpage 瀑布流分页
- filter 筛选标签
- order 排序标签
- 内容标签
- guestbook 留言(表单)标签(废弃)
- form 表单标签
- pre 上一篇标签
- next 下一篇标签
- prenext 上一篇下一篇(高级)标签
- fileinfo 获取附件信息(文件下载)
- 内容分页
- raw 格式化编辑器文本(即将废弃)
- 全局标签
- seo 标签
- channel 栏目标签
- arcone 获取单条文档
- breadcrumb 面包屑导航标签
- adv 站点模块标签
- date 日期格式化标签
- substr字符(标题)截取标签
- volist 循环标签
- language 获取语言列表标签
- lang 特定语言下显示内容标签
- query 查询数据库内容
- include 导入模板文件标签
- 原生PHP与php标签
- map生成位置地图
- thumb 生成缩略图
- addons 插件检测
- 标签管理
- taglist标签(获取标签列表)
- tagarclist根据标签获取文章内容列表
- 导入标签
- 模板开发
- 1. 创建模板
- 2. 模板目录结构
- 3. 模板描述文件(重要) info.ini
- 4. 变量输出格式
- 4. 模板变量
- 5. 获取站点配置
- 6. 模板界面多语言
- 7. 模板静态目录及调用静态文件
- 8. 模板定义插件事件
- 9. 模板搜索页
- 10. 模板配置JSON
- 11. 导入演示数据
- 12. 卸载删除演示数据
- 13. 模板文件打包
- 14. 整站源码打包
- 插件开发
- 1. 创建插件
- 2. 目录结构
- 3. 插件名称类
- 4. 插件信息(info.ini)
- 5. 插件事件
- 6. 配置文件
- 7. install 安装目录
- 8. 创建菜单
- 9. 插件控制器
- 10. 插件视图
- 10-1 插件主题化
- 11. 插件模型
- 12. 模型事件(已废弃)
- 13. 插件内置函数
- 13-1 插件函数库
- 14. 插件多语言
- 15. 插件中间件
- 16. 插件路由
- 17. 插件验证器
- 18. 标签库
- 19. 第三方类库
- 20. 数据库文件导入
- 插件打包
- 后台前端使用帮助
- 二次开发帮助(更新中)
- 后台前端开发帮助
- 路由(链接地址、访问规则)
- URL访问
- 路由定义
- URL生成
- 会员管理
- 前台限制页面登录或权限控制
- 附录
- 数据字典
- 助手函数库
- API接口