Совместное использование правил проверки Symfony2 с backbone.js или javascript в целом? - PullRequest
9 голосов
/ 07 марта 2012

Как можно выставить 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>

Прошу ли я луну?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2015

Вы можете попробовать этот комплект. Я использовал его с разным успехом в прошлом.

https://github.com/formapro/JsFormValidatorBundle

Экспортирует все правила проверки Symfony и создает дампы в структуру данных JS. Кроме того, существуют различные помощники, которые позволяют вам применять эти проверки. Также не забудьте отключить проверку формы HTML5 с помощью <form novalidate="novalidate"> etc

Я думаю, что это может быть ограничено Symfony <= 2.6, но у меня это работает до Symfony 2.7.7. Думаю, в настоящее время сопровождающие работают над поддержкой Symfony 3.0. </p>

0 голосов
/ 22 марта 2012

Этот пакет может удовлетворить ваши потребности APYJsFormValidationBundle

Однако в настоящее время оно ограничено утверждением определенных ограничений, примененных к сущностям.

Поддержка определенных в php, yml и xml ограничений есть в списке задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...