2009-10-20 105 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

相关问题