我需要从数据库中获取用户的角色。
我想在所有事情之前做一次。所以我从 AppController 构造函数中调用了一个函数,它使用了会话组件。函数如下
public function getRoles() {
if ($this->Session->check('user_name')) {
$username = $this->Session->read('user_name');
$userdesc = $this->Session->read('user_desc');
if ($userdesc === 'Student') {
$this->roles['Student'] = true;
} elseif ($userdesc === 'Faculty') {
$this->roles['Teacher'] = true;
$this->loadModel('UserRole');
$userRolesList = $this->UserRole->getUserRolesList($username);
$this->loadModel('Role');
$rolesList = $this->Role->getRolesList();
foreach($userRolesList as $userRole)
{
$this->roles[$rolesList[$userRole['UserRole']['role_id']]] = true;
}
}
}
}
我使用数组加载会话组件。但我不能使用$this->Session
. 如果我动态加载组件,则该功能会出现其他错误。但是如果我从 beforeFilter() 调用这个函数,它不会产生任何问题。为什么我不能在构造函数中做到这一点?