2009-07-27 38 views
4

我正在製作一份報告,顯示有關我們公司銷售地點的信息。信息的一部分是該地點的「上次訪問日期」。如果從未訪問過該位置,我必須以紅色顯示(以當前語言)「從不」。有幾個像這樣的值,這只是我正在使用的示例。哪個MVC圖層應該設置此值?

目前我的位置模型返回NULL(直接從數據庫),如果位置尚未被訪問。

所以我的問題是,什麼時候使用

  1. 查看以檢查NULL值,然後以紅色顯示「從不」。
  2. 控制器檢查NULL值,將其更改爲「從不」,然後視圖將檢測到「從不」,然後將其顯示爲紅色
  3. 模型應該使用「上次訪問日期」調用某個isValid它可以檢查所有業務規則的方式(在NULL,大於6個月等時爲false),然後返回日期或'從不'以及標誌以告訴視圖以紅色或黑色顯示值。

#3,我認爲這是最靈活的。但是,這種簡單的例子太快了,無法添加高級功能?

任何想法都非常感激!

注意:我們公司的框架是多年前編寫的一些內部PHP框架。

回答

4

由於視圖必須檢查值以確定它是否應該是紅色,我沒有理由不讓它直接處理null。畢竟,「從不」是一個顯示細節。

2

選項3將是最好的決定。該模型應該負責所有的數據值,控制器的業務邏輯和視圖表示。

保持視圖儘可能簡單並避免在其中嵌入代碼總是一個好主意。雖然你可以在控制器中處理這個問題,但它需要在每個使用此模型的控制器中進行復制。如果您需要進行更改,這可能會造成問題。

+0

這就是我想要做的。我很擔心改變模型的返回值,因爲我現在不知道還有什麼依賴於NULL值。我可能仍然必須把它關掉。 – ryanday 2009-07-27 15:27:48

+0

該模型可以有其他方法,對此沒有限制。您可以簡化有一個幫助器方法,該方法返回視圖所需的內容,並且僅對視圖進行訪問。 – doomspork 2009-07-29 13:41:46

1

提供有意義的數據是模型的責任。在你的情況下,null可能和你所能得到的一樣有意義。 我對MVC(有許多方法爲使用MVC人)的方法是使用一個視圖助手類: 1)分離視圖和模型 2)在呈現

優化的方式將數據返回到視圖注意:不同的視圖可以有不同的ViewHelpers。 注意:$ this-> salesLocations-> lastVisit將通過SalesLocationViewHelper方法傳遞。

希望這是有道理的

相關問題