如何在构建日历时分离逻辑和表示代码?

时间:2011-04-23 12:57:39

标签: php html model-view-controller design-patterns logic

好的,我们有一个页面。一个非常简单的。我们称之为page.php。它将有一个控制器和一个视图。控制器将只捕获一些GET变量并在该页面的开头打印出来,该视图将显示一个页脚和一个包含来自控制器的GET变量的段落。

现在让我们假设我们想要添加一个日历。你认为这很好,也很容易。好吧,对我来说似乎根本没有。

日历由<table><tbody>X</tbody></table>组成,它是纯HTML和将创建的逻辑PHP脚本(将填充X)(基于当前的time()标记日期和时间)月份日期和数字。

现在我遇到了一个道德问题:我如何划分该日历的逻辑和视图?

将创建日期的代码块将打印<td><tr>来详细说明time()。但如果逻辑打印HTML不是很糟糕吗?我是这么认为的,因为你松散地认为这是MVC模式中典型的“逻辑和视图划分”。

同时,如果我们将所有日历逻辑带到控制器,我们只是发送到视图和日期数组(坐标X和Y告诉他将月份的第一个日期放在哪里)视图仍然需要详细说明数组,并且也将成为逻辑。

我怎么能从这个日历中真正区分逻辑和视图?

2 个答案:

答案 0 :(得分:4)

简单地在视图中迭代数组是完全正确的,并且不违反MVC模式。逻辑发生在填充数组的控制器中。更好的方法可能是将逻辑放入名为Calendar.php的模型中,并在控制器中初始化它以将其传递给视图。

答案 1 :(得分:-1)

你可以将逻辑代码放在php文件中,并将结果分配给将在视图文件中显示的变量(例如数组)

在视图文件中,您可以轻松回显变量并放置html标记。