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)
我要月亮吗?
| 归档时间: |
|
| 查看次数: |
1538 次 |
| 最近记录: |