2013-07-05 81 views
0

我是Yii的初學者。我想在整個應用程序中訪問user_id。我該怎麼做?如何訪問yii框架中的用戶詳細信息?

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 ::應用在訪問用戶ID MainController () - >用戶> getUserId();

但問題是,我無法訪問SecondController中的user_id。如果我嘗試訪問它,它會給出空值。需要幫忙。

SecondController

class SecondController extends Controller { 


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

} 

回答

0

您不需要控制器中的任何代碼。 Yii中的當前用戶由user組件表示。您可以通過Yii::app()->user->id從任何地方訪問id

如果您想存儲該用戶的自定義數據,則可以擴展CUserIdentity。有關示例,請參閱手冊here

+0

這就是問題,Yii :: app() - > user-> id。如果我在secondcontroller中使用它,則會給出空值。 – RashFlash

+0

然後,用戶要麼未登錄,要麼以某種方式覆蓋自定義WebUser類中的getId()。所有你應該真正需要的是創建你自定義的UserIdentity,在那裏你驗證drupal用戶並保持其他部分不變。 –

+0

是的,我已經覆蓋getId(),你可以在上面的代碼中看到。 – RashFlash

0

你應該告訴我們你的SecondController代碼,你從Controller類擴展呢?順便說一句,這是一回事,我不能問,什麼是Drupal在這裏?

+0

我編輯了上面的代碼並添加了第二個控制器。關於Drupal,基本上我的項目是從另一個Drupal項目獲取數據。數據是準確的,我得到用戶細節acuurately,並可以在MainController中訪問它。 – RashFlash

+0

另一個drupal項目的意思是?你的代碼在哪裏? – Ninad

相關問題