thinkphp 插件控制器
3.2.2版本开始支持插件控制器的调用,可以通过更加方便的URL地址访问到模块中的插件定义的控制器。
当URL中传入插件控制器变量的时候,会自动定位到插件控制器中的操作方法。
插件控制器的变量由参数 VAR_ADDON 进行设置,默认为addon,例如我们在URL中传入: http://serverName/Home/info/index/addon/SystemInfo
由于传入了addon参数,因此这里的Info控制器并非原来的 Home/Controller/InfoController.class.php
而是调用SystemInfo插件(位于Home/Addon目录下面)的InfoController控制器了,文件位于 Home/Addon/SystemInfo/Controller/InfoController.class.php
。
插件控制器本身的定义和普通的访问控制器一样,例如:
namespace Home\Addon\SystemInfo\Controller;
class InfoController extends \Think\Controller{
public function index(){
echo 'Addon SystemInfo';
}
}
这样,我们在访问http://serverName/Home/info/index/addon/SystemInfo
的时候 就会输出 Addon SystemInfo
如果我们的插件目录不是Addon,而是Plugin,那么需要在配置文件中定义:
'VAR_ADDON' => 'plugin'
然后访问URL地址就变成了 http://serverName/Home/info/index/plugin/SystemInfo
注意:目前插件控制器仅支持模块的插件控制器访问,尚不支持全局的公共插件。
3.2.3版本开始,插件控制器默认和模块同级,并增加ADDON_PATH常量用于定义插件控制器的目录,并且以目录名作为插件控制器的命名空间根,同样,假如我们在URL中传入:http://serverName/Home/info/index/addon/SystemInfo
3.2.3版本中,实际访问的插件控制器是 Addon/SystemInfo/Controller/InfoController.class.php
。
插件控制器的定义如下:
namespace Addon\SystemInfo\Controller;
class InfoController extends \Think\Controller{
public function index(){
echo 'Addon SystemInfo';
}
}
默认情况下,插件控制器的根目录位于和模块同级的Addon目录下面,如果需要更改插件控制器的目录,可以定义ADDON_PATH常量,例如:
define('ADDON_PATH', APP_PATH.'Common/Addon');
并且在项目配置文件中使用AUTOLOAD_NAMESPACE参数重新定义Addon的命名空间路径,例如:
'AUTOLOAD_NAMESPACE'=>array(
'Addon'=> APP_PATH.'Common/Addon',
)
thinkphp 插件控制器的更多相关文章
- thinkphp 插件
1.切换到项目根目录,使用composer require 5ini99/think-addons:dev-master命令安装thinkphp插件 如果是root用户或是管理员执行的话会有提示 等一 ...
- ThinkPHP新建控制器
ThinkPHP新建控制器 一.效果图 二.步骤 1.新建控制器文件 2.编写控制器文件 3.访问控制器 三.注意事项
- selected 刷新页面后selected选中的值保持不表(thinkphp 从控制器assign 传值到js)
昨晚解决select 刷新页面以后选择的值保持不变,要想让seleted不变,有两种思路, 1,在提交表单的时候,将所选择的option的属性设为checked . 2.将option的value或者 ...
- thinkphp空控制器的处理
<?php namespace Admin\Controller; use Think\Controller; class DengLuController extends Controller ...
- onethink插件控制器如何访问?
具体路由分析就不说啦!就是那样.这里我只是方便访问来做一个记录,方便复制粘贴访问: 例如:新增一个Baoming的插件: 那么如何,访问这个控制里面方法呢? 第一种情况:这个控制器使用的是Admin模 ...
- ThinkPHP跨控制器调用方法
跨控制器调用方法 1. 先造对象,再调用里面的方法 $sc=new \Home\Controller\IndexController(); 用绝对路径找echo $sc->ShuChu(); ...
- THINKPHP之控制器
如何新增控制器? 在Lib/Action中新增一个控制器:ProductAction.class.php: <?php class ProductAction extends Action{ ...
- thinkphp 空控制器
空控制器的概念是指当系统找不到请求的控制器名称的时候,系统会尝试定位空控制器(EmptyController),利用这个机制我们可以用来定制错误页面和进行URL的优化. 大理石平台价格表 现在我们把前 ...
- thinkphp通用控制器
<?php namespace 目录\Controller; class TypeController extends Controller { public function add() { ...
随机推荐
- ES6数组Api扩充
1. Array.of( ); ----将一组数据转换成一个数组: const num=201314; const a=Array.of(num); console.log(a); //数组 ...
- CentOS7.6安装Go-1.12.9
安装步骤 Go的官网:https://golang.google.cn 1. 下载压缩包 wget https://dl.google.com/go/go1.12.9.linux-amd64.tar. ...
- python基础小点
变量的命名规则 由字母.下划线.数字组成,且不能以数字开头 不能用关键字作为变量名 最好不要与python内置的一些方法和类名冲突 变量名应尽量简短且具有意义,多个单词之间用下划线连接 注释 # - ...
- Redmine 和GitBlit仓库服务器整合
运行环境: RedMine: 4.0.4 Git 仓库: Gitbilt V1.8.0 必须: Redmine 安装并可运行 Redmine运行的主机里面已经安装了 Git,因需要在命令行中运行 gi ...
- 47. List中特有的方法
集合的体系:--------------| Collection 单列集合的根接口----------| List 如果实现了List接口的集合类,该类具备的特点是:有序,可重复---------- ...
- EF批量添加
1.首先,打开工具——NuGet包管理器——管理解决方案的NoGet程序包——搜索Z.EntityFramework.Extensions 点击安装!!! codefirst定义一个实体,用EF的方法 ...
- leetcode-685-冗余连接②
题目描述: 参考后提交:并查集: class Solution: def findRedundantDirectedConnection(self, edges: List[List[int]]) - ...
- eclipse打包插件net.sf.fjep.fatjar
eclipse打包插件安装 1)将net.sf.fjep.fatjar_0.0.32.jar拷贝到eclipse安装目录中的plugins目录下,然后重启eclipse即可. 软件获取方式: 链接:h ...
- cdq分治·三维偏序问题
转载自FlashHu大佬的博客CDQ分治总结(CDQ,树状数组,归并排序),在讲述部分有部分删改,用了自己的代码 CDQ分治的思想 CDQ分治是基于时间的离线分治算法.这一类分治有一个重要的思想——用 ...
- OpenSceneGraph | OSG如何存储带纹理osgb格式可以节省空间
在使用OSG(OpenSceneGraph)存储带纹理osgb格式的过程中,大家会遇到这样一种情况:存储后的osgb文件所占用的大小远大于原始文件的大小,几倍至几十倍.这是为何呢?原因是OSG默认 ...