验证约束不适用于我的 Symfony3 项目

标签 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 配置
framework:
    validation: ~

默认配置是
framework:
    validation:
        enabled: true
        enable_annotations: false

需要帮助请。

谢谢

最佳答案

我解决了我的问题。

那是因为我用了 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(...);

关于验证约束不适用于我的 Symfony3 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36243238/

相关文章:

php - 如何传递参数的单个元素,声明为数组?

javascript - 如何验证复选框中具有多个名称的复选框(使用引导验证器)

python - 如何在 scikit-learn 中生成自定义交叉验证生成器?

javascript 简单验证不起作用?

css - Symfony3 中的 Assets 与 CSSREWRITE

php - 使用 Symfony2 重载 bundle

symfony - PhpStorm 和 Symfony 插件 : completion in config YAML's in Flex layout

循环中每个项目的 javascript onblur 函数

php - 基于其他用户输入的 Laravel 验证输入

php - 从供应商类生成 Symfony2 表单