2009-10-20 2 views
4

하나 개의보기에 여러 뷰를 포함하여 모두가 자신의 메뉴를 가지고 있기 때문에 모든 것이 완벽하게 작동했습니다. 클릭하면 각각의보기가 렌더링됩니다.조회 : 나는 학생의 연락처 세부 정보 및 학생 과정 등</p> <p>의 침전물 층을 만든 예를</p> <p>위해 YII 프레임 워크</p> <p>를 사용하여 다른 MVCs를 사용하여 응용 프로그램을 개발

내 고객이 한 페이지에 모든 것을 원하고 꽤 영구합니다. 한 페이지에 표시해야하는 MVC가 약 7 개입니다. 각각의 MVC는 자신 만의 컨트롤러, 모델, 뷰 및 자체 DB 테이블을 가지고 있습니다. 전체 애플리케이션을 다시 작성하지 않고도 한 페이지에 모든 것을 어떻게 렌더링 할 수 있습니까? 이것이 가능한가.

답변

6

문제를 올바르게 이해했다면 모든 메뉴 항목을 병합하고 각 페이지의 전체 탐색을 표시하기 만하면됩니다.

메뉴를 독립 실행 형보기로 분리하고 탐색보기에 각각 하나씩 포함하여 잘 구성된 비 반복 코드를 만들 수 있습니다.

$this->renderPartial('anotherView'); 

은 시작하기 전에 알아 두어야 할 모든 것입니다. 이것은 $this이 현재 컨트롤러 객체를 참조하기 때문에 뷰에서만 호출 할 수 있습니다.

+0

예, 작동하지만 Student (MVC) 뷰에서 Student_Contact 컨트롤러를 표시하려면 어떻게해야합니까? – Roland

+0

일반적으로 컨트롤러를 교차 호출하는 것이 좋습니다. 여러 컨트롤러에서 사용하는 공통 코드가 있다면 모델에 넣는 것이 좋습니다. – pestaa

+0

나는 다른 방법으로 코드를 다시 작성할 시간이별로 없다. 어떤 효과가 있는가? $ model = new Student; $ this-> renderPartial ('student_Contact/show', array ('model'=> $ model)); 하지만 $ model = new Student_Contact; $ this-> renderPartial ('student_Contact/show', array ('model'=> $ model)); 은 작동하지 않으려합니다. – Roland

3

당신은 다른 컨트롤러에서 뷰 사용할 수 있습니다> renderPartial ('application.views.student_Contact.show', 배열 ('모델'=> $ 모델))

$ this-을;

희망이 도움이됩니다.

+0

감사합니다. 다시 해봐야 할 때 사용해 보겠습니다. – Roland