代码之家  ›  专栏  ›  技术社区  ›  ryanday

哪个MVC层应该设置这个值?

  •  4
  • ryanday  · 技术社区  · 15 年前

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

    如果没有访问过我的位置模型,那么当前我的位置模型将返回空值(直接从数据库返回)。

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

    1. 查看以检查空值,然后以红色显示“从不”。
    2. 控制器检查空值,将其更改为“从不”,然后视图将检测到“从不”,并以红色显示该值。
    3. 如果模型使用“上次访问日期”调用某个isvalid()方法,该方法可以检查所有业务规则(对于空值为false,早于6个月等),则返回日期或“从不”以及一个标志,告诉视图以红色或黑色显示值。

    有了3,我认为这是最灵活的。但是,这个简单的例子添加高级功能是否太早了?

    任何想法都非常感谢!

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

    3 回复  |  直到 15 年前
        1
  •  4
  •   Pesto    15 年前

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

        2
  •  2
  •   doomspork    15 年前

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

    保持视图尽可能简单并避免在其中嵌入代码总是一个好主意。虽然您可以在控制器中处理这个问题,但它需要在使用这个模型的每个控制器中进行复制。如果你需要改变的话,这可能会给你带来麻烦。

        3
  •  1
  •   koen    15 年前

    提供有意义的数据是模型的责任。在您的情况下,空值可能和您能得到的一样有意义。 我对MVC的方法(与使用MVC的人一样多的方法)是使用一个viewHelper类: 1)分离视图和模型 2)以优化的方式将数据返回视图

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

    希望这有意义