2015-01-26 5 views
0

Я создаю и визуализую свою форму с помощью построителя форм, но кажется, что валидация отключена или работает неправильно. Я сохраняю свои правила проверки в файле validation.yml. Метод $form->isValid() всегда возвращает true и $form->getErrorsAsString() не содержит ошибок (только [FieldName1]: No errors, [FieldName2]: No errors ... etc).Как включить проверку для формы, созданной в построителе форм (Symfony2)?

Я создаю форму таким образом:

$form = $this->createForm(new CategoryType(), new Category()); 

Тогда я пошлю его к веточке.

В чем может быть причина? Как включить проверку?

----- UPDATE -------------------------

Я создаю форму таким способом:

public function indexAction() 
{ 
    return $this->render('MyBundle:MyView:index.html.twig', array(
     "form" => $this->createForm(new CategoryType(), new Category())->createView() 
    )); 
} 

CategoryType очень просто:

class CategoryType extends AbstractType { 
    public function buildForm(FormBuilderInterface $builder, array $options) { 

     $builder ->add('name', 'text') 
       ->add('categoryId', 'entity', array(
        'class' => 'MyBundle:Category', 
        'property' => 'name', 
       )); 
    } 

    public function getName() { 
     return 'my_form_name'; 
    } 
} 

И конечно validation.yml:

MyBundle/Form/Type/CategoryType: 
    properties: 
    - name: 
     - NotBlank: ~ 
     - Length: 
      min: 3 
      max: 30 

MyBundle/Entity/Category: 
    properties: 
    - name: 
     - NotBlank: ~ 
     - Length: 
      min: 3 
      max: 30 

Я не знаю, какую версию использовать, но обе они не работают.

+0

вы используете аннотации, чтобы указать ограничение? Убедитесь, что вы: http://symfony.com/doc/current/book/validation.html#validation-and-forms – mezod

+0

знаете ли вы, что на самом деле функция '$ form-> isValid()'? Может быть, вы думаете, что эта функция проверяет правильность ввода, например javascript? –

+1

Вы должны показать нам, где и как вы вызываете валидаторы. Также как вы обрабатываете запрос? Вы вызываете $ form-> handleRequest ($ request)? Могло быть много причин, почему ваша проверка не работает. Пожалуйста, подробнее –

ответ

1

Я думаю, что this тема поможет вам.

Вы должны проверить, что конфигурация валидаторов в config.yml определяются следующим образом:

framework: 
    validation: { enabled: true, enable_annotations: false } 
+0

По-прежнему та же проблема. – ZaquPL

+0

Как вы обрабатываете запрос? Поскольку мы не знаем, как вы относитесь к форме POST-запроса, мы не можем вам помочь. В представленном нами коде показан только рендер формы. –

Смежные вопросы