若出现标题所描述的错误,检查下当前controller的init()方法中是否含有 $this->redirect() 之类的方法,这类方法不可以放在init()中,但可以放在beforeAction($action) 中。
每个action都希望检查登录状态的话,可以在controller的beforeAction($action)中判断,如下
1
2
3
4
5
6
7
8
9
10
11
|
class MainController extends \common\components\BaseController{
public function beforeAction($action){
if (Yii::$app->user->getIsGuest()) {
$this->redirect([‘main/login’]);
return false;
}
return parent::beforeAction($action);
}
}
|
备注
- yii2的执行顺序是, init() -> beforeAction() -> 指定的action() -> afterAction()
- 若beforeAction()不返回true,则不会执行下一步