2013-03-25 3 views
3

Я только начал изучать Yii, где я создал один контроллер PostController. В этом контроллере у меня есть одно требование использования Sessions.Создать конструктор метод в контроллере в Yii

Так что я создал один метод конструктора и его код выглядит следующим образом

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

Но после создания этого конструктора контроллер не работает и выдает ошибку. И после удаления этого кода мой контроллер работал отлично. Я написал этот код внутри конструктора, чтобы не инициализировать Session в каждом методе для actionCreate и actionUpdate.

Так что мой вопрос в том, как мы можем создать конструктор в Yii?

Благодаря

+0

IMHO, yii создать CHttpSession автоматически, не так ли? См. 'CWebApplication :: getSession()', и при попытке создать новую $ _SESSION - вы всегда получите ошибку. – Sergey

+0

@Sergey Спасибо за комментарий, но если я напишу тот же код внутри 'actionCreate', он отлично работает. –

+0

ну, какая у вас ошибка? Plz показать это – Sergey

ответ

6

Вы просто забыли позвонить родительский конструктор:

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

Вы можете использовать beforeAction вместо переопределения __construct.

И Сергей прав, по умолчанию Yii начнет сеанс (autoStart), вы просто должны использовать Yii::app()->session, например, :

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

Я попробую это и дам вам знать .. :) –

2
public function __construct() 
{ 
     parent::__construct($this->id, $this->module); 
} 
Смежные вопросы