若出现标题所描述的错误,检查下当前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,则不会执行下一步