2012-01-30 1 views
3

나는 joomla MVC를 사용하여 나는 그것에 입력과 양식의 다른 섹션 아르 다른 탭이 양식을 만들고 싶습니다. 내가 포함시켜야 할 다른 양식에 공통적 인 몇 가지 탭이 있습니다.joomla 다른보기로보기를 추가

나는이 코드를 별도의 파일이나 뷰에서로드 할 수 있기를 바란다. 따라서 코드를 중복해서 작성하지 않아도되고, 폼을 변경해야 할 때 더 쉽게 작업 할 수 있기 때문에 모든 작업을 수행하지 않아도된다. 양식. 다른보기 내부에보기를 표시하는 것과 같습니다.

이 방법이 있습니까?

답변

9

줌라! 보기에 loadTemplate 메소드를 제공합니다. 당신이 레이아웃 edit (예. tmpl/edit.php)에 대한로드 tmpl 파일에 현재 인 경우

그래서 당신은 $this->loadTemplate('tab1');와 줌라를 호출 할 수 있습니다! edit.php과 동일한보기에서 tmpl/edit_tab1.php 파일을로드합니다.

tmpl/other_tab1.php을 포함하려면 동일한 레이아웃을 임시로 으로 레이아웃을 설정해야합니다. 실행 템플릿 동안 우리의 구성 요소 중 하나에 우리는 편집 템플릿에서 탭을 필요로하며, 따라서 우리는 사용

<?php $this->setLayout('edit'); // This is ugly 
     echo $this->loadTemplate('plan'); 
     $this->setLayout('run'); ?> 

난 당신이 일시적으로 이상에있을 것이라고 생각, alltogether 다른보기에서 템플릿을로드하려면 값이 view 인 경우 템플릿을로드 한 다음보기를 복원합니다. 예.

$jinput = JFactory::getApplication()->input; 
$jinput->set('view', 'other'); 
$this->loadTemplate('tab2'); 
$jinput->set('view', 'original'); 

NB : 나는 테스트 할 시간이 없었어요하지만이 작업을해야이 마지막 비트.

+0

감사합니다. cppl, 이것은 내가 찾고 있었던 aswer이었습니다! – arlievanos

+1

tmpl에서 형제보기와 함께 작동하지만 다른보기간에 작동하지 않습니다 – themis

+1

ECHO를 잊지 마세요 $ this-> loadTemplate – max4ever

0

다른보기의 다른 템플릿 파일을 수동으로로드 할 수 있습니다. 다음은 레이아웃 "layoutname"을 가진 "nameofotherview"라는 뷰에 대한 것입니다. 관리자보기의 경우 JPATH_COMPONENT_ADMINSTRATOR을 대신 사용하십시오.

require(JPATH_COMPONENT_SITE . '/views/nameofotherview/tmpl/layoutname.php'); 

뷰 클래스에 설정된 데이터는 기본 레이아웃뿐만 아니라 다른 곳에서로드하는 레이아웃과도 호환되어야합니다.

이렇게하는 부작용은 템플릿 재정의가 작동하지 않는다는 것입니다. loadTemplate 함수는 require를하고 있지만 우선 템플릿 경로에서 우선 적용 여부를 확인합니다.

관련 문제