首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

yii 批改模块使用的布局文件

2013-03-25 
yii 修改模块使用的布局文件方法一:yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题

yii 修改模块使用的布局文件

方法一:
yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题比如:

'theme'=>'mythm',那么yii的模块就使用 protected/themes/mythm/views/layouts 下的布局文件;如果未配置主题,那么 yii的模块就使用 ?protected/views/layouts 下的布局文件, 总之默认不是使用自身目录 protected/modules/my_module/views/layouts 下的布局文件。?于是想到去配置模块$layout属性'my_module' => array('layout'=>'main', //这个属性的默认值是 //layout/main),?但没有起作用,原因在于模块下的controller的$layout值仍然是 //layouts/main为了一劳永逸解决这个问题,在protected/modules/my_module/controllers里创建 DadController继承Controllerclass DadController extends Controller {public $layout = 'main';}所有的Controller都去继承DadController即可。 别忘了去主配置文件配置DadController的引入目录:'import'=>array('application.models.*','application.components.*','application.modules.my_module.controllers.*',),

方法二:

访问index.php?r=admin/default/index时,默认使用了protected/views/layout /main.php,如果想使用模块自己的layout文件(protected/modules/admin/views/layout /main.php),需要修改protected/modules/admin/controllers /DefaultController.php,在这个文件内添加下面代码:

public ?$layout = 'application.modules.admin.views.layouts.main';?


方法三:
在模块入口文件 beforeControllerAction中添加处理代码,这个方法发生于动作执行前:(例如AdminModule.php)
??? public function beforeControllerAction($controller, $action)
??? {
??? ?????$controller->layout = 'application.modules.admin.views.layouts.book';
??? ??? if(parent::beforeControllerAction($controller, $action))
??? ??? {
??? ??? ??? // this method is called before any module controller action is performed
??? ??? ??? // you may place customized code here
??? ??? ??? return true;
??? ??? }
??? ??? else
??? ??? ??? return false;
??? }

热点排行