【问题标题】:Views: Including multiple views in one view视图:在一个视图中包含多个视图
【发布时间】:2009-10-20 15:54:29
【问题描述】:

我使用 Yii 框架开发了一个具有不同 MVC 的应用程序

例如

我为学生联系方式和学生课程等创建了一个 crud 层。

所有工作都完美无缺,因为每个都有自己的菜单,并且在单击每个视图时都会呈现自己的视图。

现在我的客户想要一页上的所有内容,并且非常持久,我们正在讨论需要在一页上显示的 7 个 MVC。每个 MVC 都有自己的控制器、模型和视图以及自己的数据库表。如何在不重写整个应用程序的情况下将它们全部呈现在一个页面上?这可能吗?

【问题讨论】:

    标签: php yii


    【解决方案1】:

    如果我正确理解了您的问题,您只需合并所有菜单项并在每个页面上显示完整的导航。

    通过将菜单分离成独立的视图并将它们中的每一个都包含在导航视图中,您可以获得结构良好的非重复代码。

    $this->renderPartial('anotherView');
    

    几乎是您入门时可能需要知道的一切。这只能在视图中调用,因为$this 指的是当前控制器对象。

    【讨论】:

    • 可以,但是如果我想在学生 (MVC) 视图中显示 Student_Contact 控制器,我该怎么做?
    • 通常不鼓励交叉调用控制器。如果您有一些多个控制器使用的通用代码,我建议将其放在模型中。
    • 我没有太多时间重写任何代码,否则我会用另一种方式来做,这个 $model=new Student; 有效。 $this->renderPartial('student_Contact/show',array('model'=>$model));但是 $model=new Student_Contact; $this->renderPartial('student_Contact/show',array('model'=>$model));不想工作
    • 因为 show view 期望 'model' 是一个模型,而不是一个控制器。如果时间不够,为什么不直接复制所需的代码?
    【解决方案2】:

    您可以使用来自其他控制器的视图:

    $this->renderPartial('application.views.student_Contact.show',array('model'=>$model));

    希望这会有所帮助。

    【讨论】:

    • 谢谢,如果我需要再次这样做,我会试试这个
    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多