zoukankan      html  css  js  c++  java
  • onethink 插件模板定位

    <?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 HomeController;
    use ThinkController;
    
    /**
     * 扩展控制器
     * 用于调度各个扩展的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 AddonsHelloController;
    use HomeControllerAddonsController;
    
    class HelloController extends AddonsController{
        public function replyText(){
            $this->display('replyText');
        }
    }
    

    通过链接访问插件

    <a class="item" href="{:addons_url('Hello://Hello/replyText')}">自定义菜单</a>
    

      

      

      

  • 相关阅读:
    初识python 2.x与3.x 区别
    装饰器
    函数的进阶
    Spring Boot启动问题:Cannot determine embedded database driver class for database type NONE
    22.Spring Cloud Config安全保护
    23.Spring Cloud Bus 无法更新问题(踩坑) Spring cloud config server Could not fetch remote for master remote
    24.Spring Cloud之Spring Cloud Config及Spring Cloud Bus
    Spring Boot整合Spring Data Elasticsearch 踩坑
    项目中Spring Security 整合Spring Session实现记住我功能
    32.再谈SpringBoot文件上传
  • 原文地址:https://www.cnblogs.com/bushe/p/4618885.html
Copyright © 2011-2022 走看看