PHP MVC,局部视图?

Cra*_*son 1 php model-view-controller views partial

我正在构建一个小的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>
Run Code Online (Sandbox Code Playgroud)

然后将视图从控制器中拉出,放在正确的位置.

如上所述,我认为我需要使用部分视图,但是我发现的大多数信息都是针对ASP的,而且我有点丢失了!

我原以为这是一个相当普遍的问题,所以我认为有一个明显的解决方案!

谢谢!

ter*_*ško 5

问题的根源是你没有意见.你称之为"视图"的实际上是一个模板.这又强制控制器中的表示逻辑.

在适当的MVC视图中是包含所有表示逻辑的实例.他们从模型层获取信息,然后根据数据选择如何显示此信息.每个视图都操纵多个模板.

此外,您的控制器似乎已经获得了额外的责任.它应该改变模型层和当前视图的状态,而不是渲染模板.