Yii2是否使会话在一个控制器的所有操作上工作?

Yii2是否使会话在一个控制器的所有操作上工作?,yii2,Yii2,在我的SiteConcoller中,我需要访问几乎所有操作的会话。 但我发现我在写作 $session = Yii::$app->session; $session->open(); 在同一控制器的每个动作上重复相同的代码是令人讨厌的。 无论如何,要解决这个问题?如果您只想在SiteContoller中打开会话,您需要在操作前方法中打开会话,如下所示: public function beforeAction($action) { Yii::$app->session

在我的SiteConcoller中,我需要访问几乎所有操作的会话。 但我发现我在写作

$session = Yii::$app->session;
$session->open();
在同一控制器的每个动作上重复相同的代码是令人讨厌的。
无论如何,要解决这个问题?

如果您只想在
SiteContoller
中打开会话,您需要在操作前方法中打开会话,如下所示:

public function beforeAction($action) {
    Yii::$app->session->open();
    return parent::beforeAction($action);
}

现在这个方法不叫isStarted(),它叫isActive()@是的,我的错对不起,我把yii1.1弄混了。似乎yii2在开始会话之前进行了必要的检查。尝试在控制器中添加
beforeAction
方法。@tyan顺便说一句,参考资料说Yi2中的会话在需要时会自动启动,这意味着当您尝试使用NOTE yii组件获取会话值时,它会启动会话。我不知道为什么,在我的情况下,自动启动不起作用,但是在beforeAction中打开它效果很好。@tyan
autoStart
在yii2中被删除了,我把版本2和1.1搞砸了。在yii2中,只要您尝试使用它,会话就会自动启动,如
Yii::$app->session->get('some_key')
Yii::$app->user->getState('is_admin')