哪个MVC层应设置此值?

时间:2009-07-27 14:43:27

标签: php model-view-controller

我正在制作一份报告,显示有关我们公司销售地点的信息。其中一个信息是该位置的“最后访问日期”。如果从未访问过该位置,我必须以红色显示(使用当前语言)“从不”。有几个像这样的值,这只是我正在使用的例子。

目前我的位置模型如果没有访问过该位置,则返回NULL(直接来自数据库)。

所以我的问题是,我是否使用

  1. 查看以检查NULL值,然后以红色显示“从不”。
  2. 控制器检查NULL值,将其更改为“从不”,然后视图将检测到“从不”并以红色显示
  3. 模型应该使用“上次访问日期”调用一些isValid()方法,该方法可以检查所有业务规则(NULL为NULL,6个月之后等),然后返回日期或“从不”以及标志告诉视图以红色或黑色显示值。
  4. #3,我认为这是最灵活的。但是这个简单的案例是否过早地添加了这种高级功能?

    非常感谢任何想法!

    注意:我们公司的框架是多年前编写的一些内部PHP框架。

3 个答案:

答案 0 :(得分:4)

由于视图必须检查值以确定它是否应该是红色,我认为没有理由不让它直接处理null。毕竟,“从不”是一个显示细节。

答案 1 :(得分:2)

选项3将是最好的决定。模型应该负责所有数据值,控制器,业务逻辑和视图表示。

保持视图尽可能简单并避免在其中嵌入代码始终是个好主意。虽然您可以在控制器中处理此问题,但需要在使用此模型的每个控制器中进行复制。如果你需要做出改变,这可能会在未来产生问题。

答案 2 :(得分:1)

模型的责任是提供有意义的数据。在你的情况下,null可能就像你可以得到的那样有意义。 我对MVC的方法(人们使用MVC的方法和人们一样多)是使用ViewHelper类: 1)解耦视图和模型 2)以优化用于呈现的方式将数据返回到视图

注意:不同的视图可以有不同的ViewHelper。 注意:$ this-> salesLocations-> lastVisit将通过SalesLocationViewHelper方法传递。

希望这是有道理的