CanPHP在模板文件中调用模块方法

作者:Jeen 发布于:2013-4-21 19:38 Sunday 分类:Web开发

默认在模板文件中只能接受调用方法传过来的参数,需要调用模块(module)方法的话,对框架中的cpTemplate文件进行一些修改就很方便了,使用方法与开发文档中相同。
修改 CanPHP/core/cpTemplate.class.php 添加模块调用方法,使前台模板中可以调用指定模块中的方法
///查看 CanPHP/lib/common.function.php

//模块之间相互调用

public function  module($module)
{
    static $module_obj=array();
    static $config=array();
    if(isset($module_obj[$module]))
    {
        return $module_obj[$module];
    }
    if(!isset($config['MODULE_PATH']))
    {
        $config['MODULE_PATH']=cpConfig::get('MODULE_PATH');
        $config['MODULE_SUFFIX']=cpConfig::get('MODULE_SUFFIX');
        $suffix_arr=explode('.',$config['MODULE_SUFFIX'],2);
        $config['MODULE_CLASS_SUFFIX']=$suffix_arr[0];
    }
    if(file_exists($config['MODULE_PATH'].$module.$config['MODULE_SUFFIX']))
    {
            require_once($config['MODULE_PATH'].$module.$config['MODULE_SUFFIX']);//加载模型文件
            $classname=$module.$config['MODULE_CLASS_SUFFIX'];
            if(class_exists($classname))
            {
                return  $module_obj[$module]=new $classname();
            }
    }
    return false;

}

——————–补充——————————–
修改cpTemplate 文件之后,导致其他方法重新加载是网站出现异常 状况记录
。LANG::get()  多语言中的cookie 重设问题,修改lib/Lang.class.php 中85行附近的setcookie 代码,添加if 判断

if($_COOKIE['cp_language'] != $lang) setcookie('cp_language',$lang,time()+3600*24*365,'/');

———————待完善———————–

标签: php canphp

发表评论:

©2010-2024 Jeen All Rights Reserved.Powered by emlog 京ICP备15058100号-1