gpt4 book ai didi

javascript - 一般与 backbone.js 或 javascript 共享 Symfony2 验证规则?

转载 作者:数据小太阳 更新时间:2023-10-29 03:57:56 25 4
gpt4 key购买 nike

是否可以公开Symfony2 验证规则(对于给定的实体)?我找不到这样的东西。我正在尝试使用 DRY 方法进行客户端验证(使用 backbone.js)。 bundle 或任何小费之类的东西会有所帮助。

Here is组件验证器。一种可能性是:

使用 Symfony2 标准方式定义服务器端验证规则。示例(YAML,取自他们的网站):

# src/Acme/BlogBundle/Resources/config/validation.yml
Acme\BlogBundle\Entity\Author:
properties:
name:
- NotBlank: ~

使 /author/rules 返回一个 JSON 对象,该对象将字段从实体映射到“编译的”正则表达式。我对此不太确定,但我认为 Symfony2 在内部将 validation.yml 规则编译为正则表达式。

假设一个作者实体由 NotBlankname 字段组成(注意我不是正则表达式的专家,这是从另一个问题复制和粘贴的):

{ 'name' : '^\s*\S' }

最后检索该 JSON 对象并使用 backbone.js 系统进行客户端验证可能做缓存。例如(警告!validate() 中的类似伪代码的代码):

<script>
$(function () {
window.MyApp = window.MyApp || { Models : {}, Views : {}, Router : {} };

window.MyApp.Models.Author = Backbone.Models.extend({
initialize : function() { _.bindAll(this, 'validate') },
validator : $.get('/author/rules');
validate: function(attrs) {

// Loop each property of this model
_.each(attrs, function(field, value) {

// Get the regex from the validatior
var rule = this.validator[field];
var regex = new RegExp(rule);

if(!regex.test(value)) return "Model not valid.";

}
}
});
});
</script>

我要月亮吗?

最佳答案

您可以试试这个 bundle 。我过去使用它取得了不同程度的成功。

https://github.com/formapro/JsFormValidatorBundle

它导出所有 Symfony 验证规则,然后转储到 JS 数据结构中。然后有各种帮助程序可以让您执行这些验证。还记得使用 <form novalidate="novalidate"> 禁用 HTML5 表单验证等等

我认为它可能仅限于 Symfony <= 2.6,但我已经让它运行到 Symfony 2.7.7。我认为维护者目前正在致力于 Symfony 3.0 支持。

这个包仍在积极开发中:

  • 1.2 版支持 Symfony <= 2.6
  • 1.3 用于 Symfony 2.7 - 2.8
  • 1.4 为 3.0
  • 1.5 为 3.1
  • 1.6 for 4(虽然目前是预发布版)

关于javascript - 一般与 backbone.js 或 javascript 共享 Symfony2 验证规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com