2013-10-17 4 views
0

yii에서는 "admin"모듈을 만들고 defalult.so 이외의 사용자 정의 된 레이아웃을 사용하도록 모듈을 설정하려고합니다. 일부 게시물을 검색하면 효과가 있습니다! 난 이후로 내 응용 프로그램을 구성한 후yii 모듈 레이아웃 사용자 정의

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

, 내 응용 프로그램은 지금 매우 늘지 일을 좀 quetions 있습니다 :

  1. layoutPath
    이 게시물은 내가 읽은이다
    게시물이 구성 되었음
    $this->layoutPath = Yii::getPathOfAlias('administration.views.layouts');
    layoutPah 변수가 나를 혼란스럽게합니다. 이 var은 어떤 클래스에서도 정의되지 않은 것 같습니다. 그래서 $this이 호출 할 수있는 이유는 무엇입니까?
  2. /layouts/main
    사용 //layouts/main 그것이 작동하지 않습니다 /layouts/main//layouts/main 의 차이점은 무엇입니까
  3. , 응용 프로그램은 여전히 ​​광산은 기본 메인 레이아웃을하지 호출?

  4. 덮어 포스트는 모듈 컨트롤러의 init() 방법에 설정된 값을 덮어 제어기에서 상기 public $layout='//layouts/column1';. 이 TRU입니까?
+0

에 다음 코드를 넣을 수 있습니다.com/questions/17467209/왜 -yii-module-does-not-find-system-views/17467760 # 17467760 –

+0

ver 많은 감사합니다!이 내 질문 # 2 해결! – Chain

답변

2
  1. layoutPath을 LayoutPath는 CWebApplication에 정의되어
    details in the wiki 그래서 당신이 할 수있는 자체를 사용하여 :

  2. peterm는

    응답 Yii::app()->layoutPath= Yii::getPathOfAlias('administration.views.layouts');

  3. 이 참조를 덮어 쓰기에 대한 설명:

    이 컨트롤러의보기에 적용 할 레이아웃의 이름입니다. 기본값은 null이며 응용 프로그램 레이아웃이 사용됨을 의미합니다. false이면 레이아웃이 적용되지 않습니다. 컨트롤러가 모듈에 속하고이 레이아웃 속성이 null 인 경우 모듈 레이아웃이 사용됩니다.

그래서 당신은 null로 설정해야하고 모듈 레이아웃이 사용됩니다. 참고 : 컨트롤러의 모든 동작에서 레이아웃을 null $this->layout=null;으로 설정하면 레이아웃이이 작업에서만 null이되고 다른 작업에서는 그렇지 않을 수 있습니다!

+0

감사합니다! 이해할 수 있습니다. – Chain

+1

답변으로 문제가 해결되면 상자에 체크하면 해결 된 것으로 표시해야합니다! – darkheir

+0

죄송합니다, 새로운 기능을 stackoverflow! – Chain

0

다음 코드를 컨트롤러에 넣을 수 있습니다. HTTP : // 유래

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

은 또는 당신은 내 비슷한 대답을 확인 # 2의 모듈 부트 스트랩 클래스

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

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