2010-03-24 38 views
2

我建立一個框架,將驗證基於寫入JSON形式要求規範形式兩個客戶端(JavaScript)和服務器端。HTML表單要求規範

的目的是讓服務器和客戶端,使代碼更易於維護,快寫,少馬車上擺脫邏輯等效代碼。

規範格式可能看起來是這樣的:

{ '<field_name>' : ['<validation_function>', 'req', ['<requirement>', <param>], ...], ... } 

(需求列表進行排序,以便用戶可以先獲得最基本的錯誤信息,「請求」的要求,必須是第一位的,如果它存在和手段該字段是必需的)

如)

{ 
    'name' : ['string', 'req', ['min',6], ['max',150], ['match', /^[\sa-z0-9ÅÄÖåäö&]$/i], ['not_match', /^tmp_/]], 
    'email' : ['email', 'req'], 
    'email_confirm' : ['same_as', 'email'], 
    'password' : ['string', 'req', ['min', 6], ['max', 64], ['match', /^[a-z0-9\[email protected]#\$%^&*_+.]$/i] ], 
} 

有誰知道類似的技術嗎?我認爲Rails驗證框架解決了錯誤級別的問題,因爲我發現表單通常在多個模型上運行。

回答

0

我知道Django的有一個驗證框架了。但它也發生在後端。

但是,如果後端是唯一可以知道輸入的數據是否有效的地方?例如,此驗證系統的用戶可能希望確保電子郵件地址尚未用於其他帳戶。然後,檢查不會發生在客戶端。

+0

是一些檢查只能在服務器端完成。但是,我只是試圖解決應該在客戶端和服務器端進行驗證的問題。對於僅服務器端檢查,不存在重複代碼。 – Peder 2010-03-24 14:18:35

+0

一個非常好的主意。除了說你的想法是好的,我無法給你一個很好的答案。 – mojbro 2010-03-24 14:37:20

0

你有沒有考慮通過XMLHttpRequest重用後端驗證和返回任何錯誤的詳細信息作爲JSON適合容易更新的形式顯示錯誤? Simon Willison在他的高級Django演示文稿中(從幻燈片56開始)使用Django的優秀django.forms模塊放置example of doing so

不錯,因爲這是,我也想抓撓驅動你的問題相同的癢,這就是爲什麼我開始porting django.forms to JavaScript in js-forms,這是很遠,但遠遠沒有準備好它的預期用途,這是使用相同的核心代碼庫使用相同的Form對象定義在前端和後端運行適當的驗證。

+0

對於大多數驗證目的而言,向服務器發送ajax驗證請求是緩慢且浪費的。 感謝您的項目和django.forms API的鏈接。它看起來很有趣。 – Peder 2010-03-24 14:28:00

0

可是可是......還有的是如何做之前在軌嵌套模型/表格,並在V2.3它得到了一些不錯的支持,不是嗎?

rails 2.3 releasenotes (#nested object forms))

這並不是說每個人都使用的軌道,當然:)

+0

嵌套對象形式的改進看起來很有趣。感謝那個鏈接。不過,我仍然不知道如何使用Rails驗證框架爲多頁表單創建需求。我怎樣才能獲得Rails驗證框架來生成jQuery兼容的javascript驗證? – Peder 2010-03-24 14:16:26