AR的relations在eval动态执行代码的时候无效? [ 新手入门 ]
我在rbac里面定义了一条业务规则:
return (Yii::app()->user->profile->userlevel >= $params[0]->VERSION_LEVEL);[/code]User Model里面的relations定义是这样的:
/**
* @return array relational rules.
*/
public function relations()
{
$relations = array(
'profile'=>array(self::HAS_ONE, 'Profile', 'user_id'),
);
if (isset(Yii::app()->getModule('user')->relations)) $relations = array_merge($relations,Yii::app()->getModule('user')->relations);
return $relations;
}
在CAuthManager基类里面,业务规则是用eval动态执行的:
public function executeBizRule($bizRule,$params,$data)
{
return $bizRule==='' || $bizRule===null || ($this->showErrors ? eval($bizRule)!=0 : @eval($bizRule)!=0);
}
奇怪的是,在其他地方调用Yii::app()->user->profile没问题,但是在这个场合就报告 【属性 "CWebUser.profile" 未被定义. 】的错误。是不是我哪儿弄错了? 按理说,在调用Yii::app()->user->profile时,应该有一个关联查询会被执行, 执行结果合并到Yii::app()->user->profile属性啊。。。
共 5 条回复
-
Yii Framework验证身份并储存用户状态
Yii Framework验证身份并储存用户状态
coquille 北京
注册时间:2011-07-10
最后登录:1970-01-01
在线时长:0小时0分
最后登录:1970-01-01
在线时长:0小时0分
- 粉丝0
- 金钱80
- 威望0
- 积分80