在Yii2.0.6的时候我是在以下文件通过以下方法实现的。
frontend/modules/user/Module.php
namespace frontend\modules\user; class Module extends \yii\base\Module
{
public $controllerNamespace = 'frontend\modules\user\controllers'; public function init()
{
parent::init(); //该模块必须登陆用户访问
if (Yii::$app->user->isGuest){
return Yii::$app->response->redirect(Yii::$app->homeUrl);
} return true;
}
}
后来更新到Yii2.0.7之后,发现能执行到跳转,但就是无法跳转出去。
下面是修改后的实现方法,让他在controller里面实现逻辑
user module里面的所有controller全部继承该controller
<?php
namespace frontend\modules\user\controllers; use Yii;
use yii\web\Controller; class ApplicationController extends Controller
{
public function beforeAction($action)
{
if (!parent::beforeAction($action)) {
return false;
} if (Yii::$app->user->isGuest){
return $this->goHome()->send();//这边需要加send(),不然无法跳转,Yii 2.0.7
} return true;
}
}