問題很簡單。我應該在mvc設計模式(Zend,Symphony,Cakephp,Codeigniter)中將表單驗證過程放在哪裏。我問這個問題,因爲我有我自己的框架。但我不能決定我應該在哪裏處理表單驗證。例如,我可以在控制器中編寫if語句,但這會使控制器變得「胖」,或者我可以在模型函數中添加驗證語句(在User :: register(,,)中)。當然,這不是很複雜的事情,但我的目標是理解他們在企業級應用程序中的表現。哪裏是驗證表單數據的最佳位置?
回答
如果考慮MVC中的模型作爲我們在.NET世界呼叫的ViewModels(我相信被稱爲別處演示模型),而不是域模型,模型將添加驗證/認證的好地方。
這將允許你重用驗證邏輯,方便您隨時隨地重用模型,它是有道理的,因爲該模型將與數據一起封裝驗證邏輯。這聽起來像我的高凝聚力。
作爲一個全面的檢查,ASP.NET MVC框架似乎在這方向前進爲好。由於這個問題被標記爲'php',我不確定這最後一條信息是加強還是減弱了論點。
濫用術語凝聚力? – paxos1977
@ceretullis:我不這麼認爲,根據維基百科的定義:http://en.wikipedia.org/wiki/Cohesion_(computer_science) –
驗證是對輸入的控制。 MVC代表模型視圖控制器,因此驗證應該在控制器中。
一般驗證等isInt(),ISSTR(),isEmailAddress,isFloat()等等等等可以/應當放置在鹼控制器。然後,您可以爲指定的模型提供子控制器(映射到您的數據庫)。那些子控制器然後從基本控制器延伸。
-1我想你混淆了控制和控制器的語義相似性暗示應該有一個結構上的等值。 –
有多個地方可以進行驗證。
首先,客戶端與服務器端:這是經常一個很好的做法,以做到在客戶端預驗證發送位了線之前(如「僅允許數字!」)。作爲安全/數據完整性要求,服務器端驗證始終是強制性的。
前端與模型要求:一個特定的表單可能不知道模型對相關數據對象的要求(例如,如果業務邏輯規則中某個字段的值不應爲3,則相關數目記錄小於5) - 唯一可以知道該模型的地方。
- 1. 哪裏是放置表單驗證的最佳地點
- 2. 哪裏是定義字段驗證的最佳位置?
- 3. 哪裏是關閉數據庫連接的最佳位置?
- 4. 應用程序的最佳位置在哪裏進行驗證?經驗法則?
- 5. Rails 3:放置自定義驗證器類的最佳位置在哪裏?
- 6. 構建表單時,哪裏是設置標籤值的最佳位置?
- 7. 哪裏是放置UIViewController的設置代碼的最佳位置;
- 8. 哪一個是驗證JTextField中數據的最佳方法?
- 9. React.js&Flux - 哪裏是註冊Websocket事件的最佳位置(接收數據)
- 10. 哪裏是指定maven倉庫,pom.xml或settings.xml的最佳位置?
- 11. 哪裏是查找枚舉類型的最佳位置?
- 12. 哪裏是檢查對象權限的最佳位置?
- 13. 在JMeter中,哪裏是定義變量的最佳位置?
- 14. 哪裏是調用的最佳位置removeOnTabSelectedListener
- 15. 哪個是處理刪除數據場景的最佳位置?
- 16. 在drupal中放置數據庫查詢的最佳位置在哪裏?
- 17. 哪個是驗證函數接收參數的最佳方法
- 18. Scrapy中設置記錄器的最佳位置在哪裏?
- 19. 在哪裏把驗證代碼的PHP表單驗證
- 20. 在哪裏驗證PHP類中的輸入 - 最佳實踐
- 21. PHP表單驗證最佳實踐
- 22. IOS/SQLLite:哪裏/哪裏是創建數據庫的最佳時間
- 23. 在TDD中創建測試數據的最佳位置在哪裏?
- 24. 將數據庫ID放在客戶端的最佳位置在哪裏?
- 25. 哪裏是放置不需要選擇的DJango Admin操作的最佳位置?
- 26. 數據驗證在哪裏發生?
- 27. 鑑於此應用程序設計,放置驗證邏輯的最佳位置在哪裏?
- 28. 哪裏是放置NSUserDefault保存/加載代碼的最佳位置?
- 29. CakePHP - 哪裏是放置特定佈局邏輯的最佳位置?
- 30. 哪裏跑參數驗證
類似的問題在這裏http://stackoverflow.com/questions/223097/where-do-you-record-validation-rules-for-form-data-in-a-web-application – blank
非常不同的問題... –