如何为Yii模块中的所有控制器设置布局?

pet*_*iar 2 yii yii-modules

在我的Yii应用程序中,我有一个名为admin的模块,因此模块类是AdminModule,它扩展了CWebModule类,位于AdminModule.php文件中.根据文档,CWebModule具有layout在所有模块控制器之间共享的属性,以防控制器本身没有定义任何布局.

我的控制器没有定义任何布局,在AdminModule.php我把它:

$this->layout='webroot.themes.bootstrap.views.layouts.column2';
$this->layoutPath = Yii::getPathOfAlias('webroot.themes.bootstrap.views.layouts');
Run Code Online (Sandbox Code Playgroud)

但是,管理模块中的控制器仍在使用其他布局,我认为它是在components目录中的Controller.php中定义的.这是为什么?如何为特定模块设置共享布局?

pet*_*iar 5

解决方案是稍微更改我的代码,如下所示:

$this->layoutPath = Yii::getPathOfAlias('webroot.themes.bootstrap.views.layouts');
$this->layout = 'column2';
Run Code Online (Sandbox Code Playgroud)

与指定的路径一样,我不需要为布局指定整个路径别名.我在AdminModule.php的init()函数中有这些行,它工作正常.