onethink 插件模板定位
2015-07-03 16:00
225 查看
<?php // +---------------------------------------------------------------------- // | OneThink [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 2013 http://www.onethink.cn All rights reserved. // +---------------------------------------------------------------------- // | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn> // +---------------------------------------------------------------------- namespace Home\Controller; use Think\Controller; /** * 扩展控制器 * 用于调度各个扩展的URL访问需求 */ class AddonsController extends Controller{ protected $addons = null; public function execute($_addons = null, $_controller = null, $_action = null){ if(C('URL_CASE_INSENSITIVE')){ $_addons = ucfirst(parse_name($_addons, 1)); $_controller = parse_name($_controller,1); } if(!empty($_addons) && !empty($_controller) && !empty($_action)){ $Addons = A("Addons://{$_addons}/{$_controller}")->$_action(); } else { $this->error('没有指定插件名称,控制器或操作!'); } } protected function display($templateFile = '', $charset = '', $contentType = '', $content = '', $prefix = '') { $templateFile = $this->getAddonTemplate ( $templateFile ); $this->view->display ( $templateFile, $charset, $contentType, $content, $prefix ); } function getAddonTemplate($templateFile = '') { if (file_exists ( $templateFile )) { return $templateFile; } //dump ( $templateFile ); $oldFile = $templateFile; if (empty ( $templateFile )) { $templateFile = T ( 'Addons://' . _ADDONS . '@' . _CONTROLLER . '/' . _ACTION ); } elseif (stripos ( $templateFile, '/Addons/' ) === false && stripos ( $templateFile, THINK_PATH ) === false) { if (stripos ( $templateFile, '/' ) === false) { // 如index $templateFile = T ( 'Addons://' . _ADDONS . '@' . _CONTROLLER . '/' . $templateFile ); } elseif (stripos ( $templateFile, '@' ) === false) { // // 如 UserCenter/index $templateFile = T ( 'Addons://' . _ADDONS . '@' . $templateFile ); } } if (stripos ( $templateFile, '/Addons/' ) !== false && ! file_exists ( $templateFile )) { $templateFile = ! empty ( $oldFile ) && stripos ( $oldFile, '/' ) === false ? $oldFile : _ACTION; } // dump ( $templateFile );//exit; return $templateFile; } }
上面是定位源码,重写了display方法
下面是使用方法
<?php namespace Addons\Hello\Controller; use Home\Controller\AddonsController; class HelloController extends AddonsController{ public function replyText(){ $this->display('replyText'); } }
通过链接访问插件
<a class="item" href="{:addons_url('Hello://Hello/replyText')}">自定义菜单</a>
相关文章推荐
- 所闻所获1:动画效果的进度球(水面上升、水面涌动)
- 黑马程序员学习日记 Java基础知识精华
- Android中的加密技术
- JAVA8新特性
- jquery操作select(取值,设置选中)
- SEO的25年“进化史”:从PC到移动站点优化
- 用友华表Cell一些用法小结(cs版本)
- ubuntu14.04/12.04下的caffe 安装——caffe学习历程
- ubuntu14.04/12.04下的caffe 安装——caffe学习历程
- Win8磁盘已用空间和文件大小不符的解决方法
- SharedPreferences保存复杂数据类型
- 浮点数非精确数,作比较运算时需谨慎!
- LinCode落单的数
- JCA和JCE常见问题汇总(持续更新)
- *Triangle
- 设计模式-装饰模式
- 图像语义理解
- 循环队列-链式存储结构-c语言实现
- hibernate多表查询HQL
- Android开发(十一)——ImageView的尺寸设置scaleType