2009-10-20 91 views
4

我開發了不同的MVCS使用Yii框架查看:包含在一個視圖中的多個視圖

例如

我創建爲學生聯繫細節和Student課程等

一個污物層用塗布所有工作都很完美,因爲每個菜單都有自己的菜單,並且每次點擊時都會顯示自己的視圖。

現在我的客戶端需要在一個頁面上的所有內容,而且非常持久,我們正在討論需要在一個頁面上顯示的7個MVC。每個MVC都有自己的控制器,模型和視圖以及自己的數據庫表。如何在不重寫整個應用程序的情況下在一個頁面上呈現所有這些內容?這可能嗎。

回答

6

如果我正確理解您的問題,您只需要合併所有菜單項並在每個頁面上顯示完整導航。

通過將菜單分離爲獨立視圖並將其中的每一個都包含到導航視圖中,您可以擁有結構良好的非重複代碼。

$this->renderPartial('anotherView'); 

幾乎所有你可能需要知道的入門。這隻能在視圖中調用,因爲$this引用當前控制器對象。

+0

是的,但如果我想在Student(MVC)視圖中顯示Student_Contact控制器,我該怎麼做? – Roland 2009-10-21 07:07:50

+0

通常不鼓勵跨呼叫控制器。如果你有多個控制器使用的一些通用代碼,我建議把它放在模型中。 – pestaa 2009-10-21 07:57:38

+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 2009-10-21 08:12:08

3

可以使用從其它控制器的觀點:

$這 - >的RenderPartial( 'application.views.student_Contact.show',陣列( '模型'=> $模型));

希望這會有所幫助。

+0

謝謝,如果我需要再次執行此操作,我會嘗試此操作 – Roland 2010-01-07 13:50:53

相關問題