验证限制不适用于我的Symfony3项目

时间:2016-03-27 02:33:32

标签: validation symfony

我无法使我的验证限制 $ form-> isValid()有效。 即使我输入长度小于10的名称,书名仍然有效。

在我的AppBundle \ Resources \ config \ validation \ book.yml

AppBundle\Entity\Book:
properties:
    bookName:
        - NotBlank: ~
        - Length:
            min: 10

既不是来自formBuilder

$builder->add('bookName', TextType::class, array(
            'constraints' => new Length(array('min' => 10))))

这是我的framework.validation config

framework:
    validation: ~

,默认配置为

framework:
    validation:
        enabled: true
        enable_annotations: false

请帮助。

由于

1 个答案:

答案 0 :(得分:2)

我解决了我的问题。

这是因为我使用了Form Class并设置了validation_groups,如下所示:

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'validation_groups' => array('creation'),
        'data_class'        => 'AppBundle\Entity\Book',
    ));
}

我没有在formBuilder选项中指定它。

$form = $this->createForm(BookType::class, $book);
if ($form->isValid()) {
    ...
}

解决方案1 ​​:是从Form类的默认选项中删除验证组的定义。

解决方案2 :是为验证添加验证组:

$form = $this->createFormBuilder($book, array(
    'validation_groups' => array('creation'),
))->add(...);