Как можно выставить Symfony2 правила проверки (для данной сущности)? Я не могу найти ничего подобного. Я пытаюсь выполнить проверку на стороне клиента (используя backbone.js ) с использованием СУХОГО подхода. Помогло бы что-то вроде связки или любого наконечника.
Вот компонент проверки. Одна из возможностей будет:
Определение правил проверки на стороне сервера стандартным способом Symfony2. Пример (YAML, взят с их сайта):
# src/Acme/BlogBundle/Resources/config/validation.yml
Acme\BlogBundle\Entity\Author:
properties:
name:
- NotBlank: ~
Make /author/rules
возвращает объект JSON, который отображает поля из сущности в «скомпилированное» регулярное выражение . Я не уверен в этом, но думаю, что внутренне Symfony2 компилирует validation.yml
правил в регулярные выражения.
Предполагается, что авторская сущность сделана из поля name
с NotBlank
(обратите внимание, я не мастер в регулярных выражениях, это копия и вставка из другого вопроса):
{ '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>
Прошу ли я луну?