2013-03-25 69 views
3

我剛開始學習Yii,在那裏我創建了一個PostController控制器。在這個控制器中,我有一個要求使用Sessions在Yii中的控制器中創建構造方法

所以我創建了一個構造函數方法和其代碼如下

public $session; 
public function __construct() { 
    $this->session = new CHttpSession; 
    $this->session->open(); 
} 

但是創建此構造後,控制器不工作,並給出錯誤。刪除此代碼後,我的控制器完美運行。我已經在構造函數中編寫了這個代碼,以便不用actionCreateactionUpdate的每種方法初始化Session

所以我的問題是我們如何在Yii中創建構造函數?

感謝

+0

恕我直言,yii自動創建CHttpSession,不是嗎?請參閱'CWebApplication :: getSession()',並且當您嘗試創建新的$ _SESSION時 - 您總會得到錯誤。 – Sergey 2013-03-25 04:43:31

+0

@Sergey感謝您的評論,但如果我在'actionCreate'內部編寫相同的代碼,那麼它的工作完美無缺。 – 2013-03-25 04:46:48

+0

那麼,你有什麼錯誤? Plz show it – Sergey 2013-03-25 04:54:42

回答

6

你根本忘了打電話給父類的構造:

public function __construct() 
{ 
    ..... 
    parent::__construct(); 
} 

你可以使用beforeAction,而不是覆蓋__construct

而且謝爾蓋是正確的,默認情況下Yii的開始會話(autoStart),你只需要使用Yii::app()->session,例如:

Yii::app()->session['var'] = 'value'; 
+0

我會試試這個,讓你知道.. :) – 2013-03-25 09:17:58

2
public function __construct() 
{ 
     parent::__construct($this->id, $this->module); 
} 
相關問題