需要有关创建新“标准”/“语言”的建议

时间:2010-09-30 00:04:23

标签: syntax validation specifications

更新:评论中建议我为此创建一个wiki。我已经完成了,您可以在这里找到它(如果您希望密切关注它和/或做出贡献)。

http://vrs.tomelders.com

我之前从未做过这样的事情,所以我完全放弃了它。


我之前从未做过这样的事情,所以请

我想要开放的“标准”或“语言”,或者......好吧,我真的不知道该怎么称呼它......使表单验证更容易。我称之为VRS(验证规则表),但在这个阶段,一切都可以协商。

这个想法是创建一个规则表,类似于CSS,定义如何验证表单。这将需要

  1. 语法/规范
  2. 用于将VRS转换为可用的
  3. 的VRS分析器
  4. 用于将表单数据与规则进行比较并返回响应的VRS处理器。
  5. 响应格式。
  6. 像这样的系统的好处是

    1. 用于定义表单验证的平台/语言无关的方法。
    2. 一种跨平台,高度可移植的方式来定义表单验证。
    3. 易于阅读,易于设置,易于修改。
    4. 客户端和后端集成。
    5. 首先是第一件事。语法/规范应该是什么样的。

      我在网上看到的这种方式是可以将VRS文件指定为隐藏字段,并且应用程序在处理之前将提供的表单数据通过VRS处理器进行路由。

      举个例子,你可以验证“name”字段的内容类型看起来像这个

      name {
          content-type: alpha;
      }
      

      content-type可以是以下三个值之一:alpha,numeric或alpha-numeric。

      希望这是有道理的。我之前从未做过这样的事情所以我渴望得到别人的意见。就我而言,这是

      ------------------------------------------------------------
      
      content-type: (string) alphanumeric | alpha | numeric
      
      Restricts content to either numeric, text or alphanumeric.
      
      ------------------------------------------------------------
      
      is-fatal: BOOL
      
      If the rule fails, is it fatal? This could be really useful
      for AJAX responses.
      
      ------------------------------------------------------------
      
      allow-null: BOOL
      
      wether a field can be empty or not. Good for required fields
      and checkboxes 
      
      ------------------------------------------------------------
      
      pattern-match: (string) email | url | regex
      
      match the field against a pattern. 
      
      ------------------------------------------------------------
      
      field-match: (string) field_name
      
      compares a field to another field. eg: password confirmation
      
      ------------------------------------------------------------
      
      greater-than: INT | FLOAT
      less-than: INT | FLOAT
      within-range: INT | FLOAT, INT | FLOAT
      
      Pretty self explanatory. With regard to strings however, 
      the string length is compared against the params.
      
      ------------------------------------------------------------
      
      is-unique: (func) connection(host,user,pass), (func) map(table, field)
      
      Check the value against a field in the database to see if
      it's unique.
      
      ------------------------------------------------------------
      
      date & time validations
      
      This i'm a bit worried about in terms of terminology. I also
      want to include dynamic vars in VRS such as
      
      @now
      @today
      @thisMonth
      @thisYear
      
      ------------------------------------------------------------
      
      before: STRING | VAR
      after: STRING | VAR
      
      Again, self explanatory. Although I'm unsure what the date/time
      format should be. UTC?
      
      
      ------------------------------------------------------------
      
      Elapsed Time:
      
      I'm completely stuck on how to handle conditions like
      "years elapsed since date is more than 16"
      
      I don't relish the idea of rules as prolix as
      
      years-elapsed-since-now-are-more-than:18;
      years-elapsed-since-now-are-less-than:18;
      

      最后,我在辩论,开发者应该能够在VRS中指定错误/警告,还是应该在处理响应时这样做?

      所以,这需要很多东西,我希望它很清楚。我想我的问题是

      1. 好主意/坏主意?
      2. 这是正确的语法吗?
      3. 是否有更优雅的方式来命名规则。
      4. 缺少什么。
      5. 感谢


        更新:有些人表示这个​​提议的系统是一个坏主意。如果您这么认为,请提供一个不起作用的方案。认为这是一个坏主意是一回事,证明这是另一个坏主意,我希望看到证据表明这是一个坏主意,而不是更晚。如果你真的认为表单验证不容易或不那么繁琐,请解释原因。

        此外,我知道表单验证不是新问题。但是,目前还没有可解决表单验证的可移植,跨平台,跨语言的解决方案,这正是本提案专门针对的问题。

3 个答案:

答案 0 :(得分:2)

我喜欢将错误消息放入VRS的想法。但他们应该特定于失败的规则。

此外,您可能会考虑开发一种全新的“语言”,但使用类似YAML的内容已经存在的解析。

我认为这种语言非常有用,因为您可以使用相同的VRS进行客户端和服务器端验证。

PS:这应该是社区维基。

答案 1 :(得分:0)

  1. 我认为这是一个好主意,如果你能自己维护的话。

  2. 请记住,你制作语法。这取决于你(只要看起来不错)。

  3. 不,不是真的。只要名字很明显(看起来像它们是什么),并且不会太长或令人困惑,那就没关系了。

  4. 也许您应该在未指定规则时记下规则的默认值。

答案 2 :(得分:-2)

  1. 好主意/坏主意?

    一般来说,这种事情是个坏主意。这就是PHP的用途。

    http://www.phpformclass.com/出了什么问题 http://www.x-code.com/vdaemon_web_form_validation.php 或其他PHP表单管理工具?

  2. 这是正确的语法吗?

    没有。 PHP出了什么问题?对于这种事情,它有很好的语法。

  3. 是否有更优雅的方式来命名规则。

    是。 PHP对象类。众多其他项目。您不是第一个验证表单输入的人。

  4. 缺少什么。

    回答基本问题: PHP出了什么问题?

    已经执行此操作的相关项目列表以及具体的原因,为什么您的项目优于所有其他已经存在的项目。