0

我是 Yii 的初学者。我想在整个应用程序中访问 user_id。我怎么能这样做?

class MainController extends Controller {
    public function actionInitialize() {                   
                             $this->verifyDrupalUserIdentity(); 

          }

 private function verifyDrupalUserIdentity() {
                    new DrupalUserIdentity();                   
          }

}


class DrupalUserIdentity extends CUserIdentity {
 public function __construct() {
                    $this->authenticate();
          }
 public function authenticate(){

                    global $base_url;
                    $base_url = BASE_URL.'CA_Hive';
                    $currentPath = getcwd();
                    require_once DRUPAL_ROOT.'/includes/bootstrap.inc';
                    require_once DRUPAL_ROOT.'/includes/errors.inc';
                    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
                    chdir($currentPath);

                    global $user;
                    $this->username = $user->name;
                    new DrupalUser();
                    Yii::app()->user->setDrupalAttributes($user);
          }
}

**

  • 模型:-

**

    class DrupalUser extends CWebUser {
     private $_attributes;
              private $_browser;
    public $user_id;
     public function setDrupalAttributes($attributes) {
                        $this->_attributes = $attributes;
                        $this->user_id = $this->_attributes->uid;
              }
     public function getUserId() {
return $this->user_id;
}

    }

现在我可以使用 Yii::app()->user->getUserId()访问MainController中的用户 ID;

但问题是,我无法访问SecondController中的 user_id 。如果我尝试访问它们,它会给出空值。需要帮忙。

第二控制器

class SecondController extends Controller {


 public function getUserDetail() {
                   // Here i want the user ID                
          }

}
4

2 回答 2

0

您应该向我们展示您的SecondController代码,您是否从Controller类中扩展了它?顺便说一句,这是一件事,我不能问,这里的 Drupal 是什么?

于 2013-07-05T18:08:38.940 回答
0

您不需要控制器中的任何代码。当前用户由userYii 中的组件表示。您可以id通过Yii::app()->user->id.

如果您想为该用户存储自定义数据,您可以扩展CUserIdentity. 请查看此处的手册以获取示例。

于 2013-07-06T10:19:03.740 回答