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繼承Controller
class 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'; 

或者

public  $layout = '/layouts/column2';


方法三:
在模塊入口文件 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;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM