ThinkPHP获取Discuz的信息之后就不能实例化Thinkphp本身的模型
我做的是ThinkPHP+Discuz!X2.5的整合
想让ThinkPHP直接获取Discuz的用户登录信息。
下面这个UserAction可以成功获取到。
<?php
class UserAction extends Action{
function logininfo(){
include '../bbs/source/class/class_core.php';
$discuz = & discuz_core::instance();//以下代码为创建及初始化对象
$discuz->cachelist = $cachelist;
$discuz->init();//以上是调用discuz公共执行类等核心代码
global $_G;
$arr1= array(
'uid'=>$_G['uid'],
'username'=>$_G['username'],
'adminid'=>$_G['adminid'],
'groupid'=>$_G['groupid'],
'sid'=>$_G['sid'],
'formhash'=>$_G['formhash'],
'connectguest'=>$_G['connectguest'],
'timestamp'=>$_G['timestamp'],
'starttime'=>$_G['starttime'],
'clientip'=>$_G['clientip'],
'referer'=>$_G['referer'],
'charset'=>$_G['charset'],
'gzipcompress'=>$_G['gzipcompress'],
'authkey'=>$_G['authkey'],
);
//dump($arr1);
return $arr1;
}
}
?>
但是在其他Action中调用它,就会出现一个很严重的问题。
如果我调用了这个UserAction,并且实例化了模型,页面将什么都不显示。
如果我只实例化模型,或者只调用这个UserAction,则正常显示。
我建立了一个测试控制器,TestAtion,代码如下
<?php
class TestAction extends Action{
function test(){
$user=new UserAction(); //实例化UserAction
$user_login_info=$user->logininfo();
$this->assign('userinfo',$user_login_info);
//$local=new Model('Local'); //实例化Local模型
$this->display();
}
}
?>
如果我把$local=new Model('Local');这句代码备注掉,模板可以正常显示{$userinfo['username']}等变量。
但是不备注$local=new Model('Local');什么都不能显示。
反过来也是一样,把
$user=new UserAction();
$user_login_info=$user->logininfo();
$this->assign('userinfo',$user_login_info);
这么3行去掉,模板可以正常显示,也可以获取Local的信息。
总而言之,他们2个犯冲,只能显示其一。
鸭梨是多的
12 years, 2 months ago