通常使用backbone.js或javascript共享Symfony2验证规则?

gre*_*emo 10 javascript validation symfony backbone.js

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

这是组件验证器.一种可能性是:

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

# src/Acme/BlogBundle/Resources/config/validation.yml
Acme\BlogBundle\Entity\Author:
    properties:
        name:
            - NotBlank: ~
Run Code Online (Sandbox Code Playgroud)

/author/rules返回一个JSON对象从实体域映射到一个"编译"正则表达式.我不太确定这一点,但我认为内部Symfony2将validation.yml规则编译成正则表达式.

假设一个作者实体由name字段构成NotBlank(注意我不是正则表达式中的主人,这是另一个问题的复制和粘贴):

{ 'name' : '^\s*\S' }
Run Code Online (Sandbox Code Playgroud)

最后检索该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>
Run Code Online (Sandbox Code Playgroud)

我要月亮吗?

Mad*_*nty 0

该捆绑包可能适合您的需求APYJsFormValidationBundle

然而,它目前仅限于断言应用于实体的已定义约束。

对 php、yml 和 xml 定义的约束的支持已在待办事项列表中。