参考教程http://www.thinkphp.cn/document/491.html
官方文档更新了,
http://document.thinkphp.cn/manual_3_2.html#addon_controller
啥时候更新了这块的?之前好像没有看到
开始动手
在common/conf/config.php定义
'VAR_ADDON' => 'addons'访问url: /upload/ke_upimg/addons/EditorForAdmin(其实 /upload/ke_upimg [CONTROLLER_LEVEL==1] 就等同于 常用的 /控制器名/方法名 这样子的一个访问方式,只是定义了 VAR_ADDON 并在url中传入$_GET[VAR_ADDON] = 插件名,系统就会调用定义在其它位置的函数)
找到 controller() 函数,把$class输出可以知道,实际实例化的是 Addon\EditorForAdmin\Controller\UploadController类,调用 ke_upimg[ACTION_SUFFIX] 方法
function controller($name,$path=''){
$layer = C('DEFAULT_C_LAYER');
if(!C('APP_USE_NAMESPACE')){
$class = parse_name($name, 1).$layer;
import(MODULE_NAME.'/'.$layer.'/'.$class);
}else{
$class = ( $path ? basename(ADDON_PATH).'\\'.$path : MODULE_NAME ).'\\'.$layer;
$array = explode('/',$name);
foreach($array as $name){
$class .= '\\'.parse_name($name, 1);
}
$class .= $layer;
}
echo $class;die;
if(class_exists($class)) {
return new $class();
}else {
return false;
}
}函数在/Thinkphp/common/functions.php自定义 VAR_ADDON,只是修改了 url 的参数名,
找到 /Thinkphp/Thinkphp.php 64行 修改 ADDON_PATH 如:
defined('ADDON_PATH') or define('ADDON_PATH', APP_PATH.'Addons');实例化对象变成了 Addons\EditorForAdmin\Controller\UploadController这时候,可以把插件控制器放置到[参考onethink]
/Addons/EditorForAdmin/Controller/UploadController.class.php
最佳答案