yii1如何从Yii :: app() - >用户命令获取userdata

时间:2015-12-28 17:30:17

标签: php yii

我想获取已登录用户的角色ID,以显示网站的可见特定链接。目前我有学生和导师表,并为两个用户单独登录。学生表的角色为1,教师表的角色为2,如何查看已登录用户的角色。

我试过

<?php echo Yii::app()->user->role;?>

但它返回以下错误

Property "CWebUser.role" is not defined.

请咨询

1 个答案:

答案 0 :(得分:2)

有两种解决方案:

  1. 在扩展setState()课程中使用CUserIdentity。它在用户身份验证期间调用一次,并且在下一页刷新时不会更新。不要存储角色或密码等重要信息,因为它可以存储在cookie中。它很容易存储名称,上次访问时间等信息。
  2. 以下是一个示例:http://www.yiiframework.com/wiki/6/how-to-add-more-information-to-yii-app-user

    1. 扩展CWebUser并添加一些公开方法,例如getRole()
    2. <强> main.php

      'user' => array('class' => 'application.components.WebUser')
      

      <强> WebUser.php

      class WebUser extends CWebUser {
          public $role;
      
          public function getRole(){
              if ($this->role === null) {
                  // Here you need to get User role
                  $this->role = Yii::app()->db->createCommand("SELECT role FROM {{user}} WHERE id=:id")->queryScalar(array(':id' => Yii::app()->user->id));
              }
      
              return $this->role;
          }
      }
      

      然后,如果您需要Yii::app()->user->roleYii::app()->user->getRole()

      ,请致电