2013-10-17 71 views
0

在yii中,我創建了一個名爲「admin」的模塊,並且我想設置模塊使用我自定義的除defalult.so之外的佈局,所以我搜索了一些帖子並且它工作正常!
這是後我讀到:yii模塊佈局定製

http://www.yiiframework.com/forum/index.php/topic/24767-module-layout/

之後我配置我的應用程序的帖子,我的應用程序現在工作非常well.but我有一些quetions:

  1. 的layoutPath
    崗位說配置
    $this->layoutPath = Yii::getPathOfAlias('administration.views.layouts');
    layoutPah變量很迷惑我,似乎這個var不能在任何class中定義,那麼爲什麼它可以被$this調用?
  2. /layouts/main
    是什麼/layouts/main//layouts/main 使用時//layouts/main不會工作之間的差異,應用程序仍然可以調用默認的主要佈局不是我的?
  3. 重寫
    後也表示在控制器中的public $layout='//layouts/column1';覆蓋 值在模塊控制器init()方法設置。 是此超鈾? Yii::app()->layoutPath= Yii::getPathOfAlias('administration.views.layouts');

  4. 通過PeterM

    回答
  5. 覆蓋 參見:

+0

#2檢查我類似的回答:HTTP://計算器。com/questions/17467209/why-yii-module-does-not-find-system-views/17467760#17467760 – 2013-10-17 10:03:12

+0

非常感謝你!這解決了我的問題#2! – Chain

回答

2
  1. 的layoutPath
    的LayoutPath在CWebApplication定義見details in the wiki 所以你可以通過使用本身它的描述:

    要應用於此控制器視圖的佈局的名稱。默認爲空,表示使用了應用程序佈局。如果它是假的,則不會應用佈局。如果控制器屬於某個模塊並且此佈局屬性爲空,則將使用模塊佈局。

因此你需要將其設置爲null,模塊位置的佈局將被使用。 注意:在您的控制器的任何操作中,您可以將佈局設置爲空$this->layout=null;,這樣佈局將僅在此操作中爲空,而不在其他操作中爲空!

+0

謝謝!我知道了 – Chain

+1

如果答案解決了您的問題,您應該將它標記爲已勾選! – darkheir

+0

對不起,新增至stackoverflow!如何標記它? – Chain

0

你可以把下面的代碼放到你的控制器中。

public function init() 
{ 
    Yii::$app->setLayoutPath($this->module->getBasePath().'/views/layout'); 
} 

,或者你可以把下面的代碼在你的模塊引導類

/** 
* @inheritdoc 
*/ 
public function init() 
{ 
    parent::init(); 

    Yii::$app->setLayoutPath($this->getBasePath().'/views/layout'); 
}