【问题标题】:Which MVC layer should set this value?哪个 MVC 层应该设置这个值?
【发布时间】:2009-07-27 14:43:27
【问题描述】:

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

如果尚未访问该位置,则当前我的位置模型返回 NULL(直接来自数据库)。

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

  1. 查看以检查 NULL 值,然后以红色显示“从不”。
  2. 控制器检查 NULL 值,将其更改为“从不”,然后视图将检测到“从不”并将其显示为红色
  3. 如果模型调用一些带有“最后访问日期”的 isValid() 方法,该方法可以检查各种业务规则(NULL 为假,超过 6 个月等),然后返回日期或“从不”以及标志告诉视图以红色或黑色显示值。

对于#3,我认为这是最灵活的。但是这个简单的案例添加高级功能是否为时过早?

非常感谢任何想法!

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

【问题讨论】:

    标签: php model-view-controller


    【解决方案1】:

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

    【讨论】:

    • 这可能是我最终要走的路。无论如何,视图都必须检查某些内容,这会使事情变得简单。
    【解决方案2】:

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

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

    【讨论】:

    • 这就是我想做的。我担心更改模型返回值,因为此时我不知道还有什么取决于该 NULL 值。我可能还得推迟这个。
    • 模型上可以有额外的方法,没有限制。您可以简化一个帮助方法,该方法返回视图所需的内容,并且仅用于视图访问。
    【解决方案3】:

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

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

    希望这是有道理的

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2011-04-20
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 2012-07-11
      • 1970-01-01
      相关资源
      最近更新 更多