我正在构建一个框架,它将根据json编写的表单需求规范验证客户端(javascript)和服务器端的表单。
目的是摆脱服务器和客户端上逻辑上等效的代码,使代码更易于维护,编写速度更快,错误更少。
规范格式可能类似于:
{ '<field_name>' : ['<validation_function>', 'req', ['<requirement>', <param>], ...], ... }
(需求列表是有序的,这样用户可以先获得最基本的错误消息,如果'req'要求存在则必须先出现,并且意味着该字段是必需的)
e.g。)
{
'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\!@#\$%^&*_+.]$/i] ],
}
有谁知道类似的技术?我认为Rails验证框架在错误的级别上解决了问题,因为我发现表单通常在多个模型上运行。
答案 0 :(得分:0)
我知道Django也有一个验证框架。但它也发生在后端。
但是如果后端是唯一可以知道输入的数据是否有效的地方呢?例如,该验证系统的用户可能希望确保该电子邮件地址尚未用于其他帐户。然后,该检查不会发生在客户端。
答案 1 :(得分:0)
您是否考虑过通过XMLHttpRequest重用后端验证并返回任何错误详细信息,因为JSON适合轻松更新表单以显示错误? Simon Willison在他的Advanced Django演示中使用Django的优秀django.forms
模块放置example of doing so(来自幻灯片56)。
很好,因为这是,我也想抓住驱动你的问题的同样的痒,这就是为什么我开始porting django.forms to JavaScript in js-forms,这是相当远的,但也远未准备好它的预期用途,它使用相同的核心代码库,使用相同的Form对象定义在前端和后端运行适当的验证。
答案 2 :(得分:0)
但是......之前已经有过在rails中做嵌套模型/表单的方法了,在v2.3中得到了一些很好的支持,不是吗?
请参阅rails 2.3 releasenotes (#nested object forms))
当然不是每个人都使用rails。)