【发布时间】:2012-08-07 10:59:56
【问题描述】:
我正在构建一个小型 PHP MVC,但我遇到了一小块编码区域。我认为我需要“部分视图”,但我可能能够使用现有代码实现一些目标。
我的控制器目前最简单的形式:
- 实例化一个对象
- 检查是否设置了 POST 变量
- 根据需要显示视图 1 或显示视图 2
当前的视图:
- 显示 HTML 标记
- 使用并回显模型获取函数,例如 getUserInfo()
一切都很好,但是代码现在在控制器和视图中都变得相当大,并且我已经达到了需要在主视图(1和2)中包含“模块”或子视图的情况.
例如,如果加载了 view2,那么我需要显示(作为 view2 的一部分)另一个视图,比如一个由 3 部分组成的注册表单。该注册表单也带有它自己的控制器文件。
我可以做这样的事情,它会起作用并让您对我正在尝试做的事情有所了解,但我承认这会破坏 MVC 设计模式。
查看
<div id="mydiv">Some content</div>
<div id="mysignup"> <?php include('controller_signup.php'); ?></div>
<div id="content"> The views main page content </div>
视图然后从控制器中拉入正确的位置。
如前所述,我认为我需要使用部分视图,但是我发现的大部分信息都是针对 ASP 的,我有点迷失了!
我会认为这是一个相当普遍的问题,所以我认为有一个明显的解决方案!
谢谢!
【问题讨论】:
-
我已经解决并且我认为在我开发的框架中克服了这个问题github.com/tbd-develop/bounce 如果它可以帮助你看一下。它的功能并不完全,但如果你看一下 core/library/renderer.php 部分视图的东西就在那里。我认为还没有任何可行的示例,我正在设置。
-
感谢您的回复。刚刚也看了一下你的代码,看起来令人印象深刻!那么,以最简单的形式,您有一个调用 include() 的方法?谢谢!
-
有两种方法,一种是包含请求的文件的包含方法,另一种是调用控制器执行数据库逻辑等然后包含在常规页面输出中的方法。 RenderPartial 和 Partial 是两种方法。
-
好的,谢谢,我不知道他们在做什么,所以我要玩一玩!刚刚找到这个somethingstatic.com/… - 决定!
-
感谢分享。如果我能帮忙,请告诉我,我很乐意。
标签: php model-view-controller views partial