2014-09-01 1 views
0

, 당신은이 같은 매개 변수로 (.PHP없이) 파일 이름을 지정해야합니다 예를 들어Yii : 렌더링 기능의 기본 경로를 변경하는 방법은 무엇입니까? 당신은 위젯 또는 컨트롤러에 렌더링 사용 YII에서

$this->render('forum', array('data'=>$data)); 

내가 클래스에서이 기능을 사용할 때 CWidget을 확장, Yii 내부/보호/구성 요소 /보기 forum.php를 찾으려고합니다

어떻게 다른이 기본 경로를 변경할 수 있습니까? 내 모든 위젯 클래스 (모든 클래스는 CWidget을 확장)? 내 위젯 중 일부의 경로 만 변경하려면 어떻게해야합니까?

답변

1

당신은 CWidget 클래스의 getViewPath 메소드를 오버라이드 (override) 할 필요가

예 : -

class CMyWidget extends CWidget{ 

// Returns the directory containing the view files for this widget. 

public function getViewPath($checkTheme=false){ 

// this method does the task of finding the view files containing directory. 
// so override it 

} 

// This method will look for the view under the widget's getViewPath viewPath. 
public function getViewFile($viewName) 
    { 
// override it 
} 

    } 

그리고 위젯을 만들 때 마지막으로 당신은 CMyWidget을 확장해야 클래스 대신합니다 CWidget

+0

나는 내가 만든 위젯에 getViewPath() 메소드를 할 수 있나요? 또는 setViewPath() 메서드를 만들어 설정을 변경해야합니까? –

+0

예 위젯에서 getViewPath()를 재정의 할 수 있지만 많은 위젯을 작성해야하는 경우 각 위젯에서 동일한 위젯을 대체해야합니다. 그것은 내가 생각하는 문제가 될 것입니다. –

0

간단하게 할 수 있습니다. $this->render('//path/forum', array('data'=>$data));입니다. 여기서 //은 기본보기 디렉토리를 가리키며, 보통 protected/views입니다.

또한 점 표기법으로 앨리어스 경로를 사용할 수 있습니다 :

$this->render('application.myviews.test'); // would render protected/myviews/test.php 
$this->render('webroot.test'); // would render htdocs/test.php 
+0

내 뷰 파일은 보호 된/뷰 밖에 있습니까? –

+0

도트 표기법을 사용할 수 있습니다. 나는 나의 대답을 업데이트했다. –

관련 문제