使用Symfony中的Entity断言验证表单

时间:2015-03-14 03:30:32

标签: validation symfony entity yaml

我想在Entity类中使用asserts验证表单,但是当我提交表单时,它表示$ form-> isValid()为true。

以下是我如何设置它:

// config.yml
validation:      { enabled: true, enable_annotations: false }

// validation.yml
Software\Bundle\Entity\Program:
    properties:
        name:
            - NotBlank: ~

// MyForm
...
        $builder
        ->add('name', 'text', [
            'label' => 'word.name'
        ])
    ;
...

// Program.php

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255, nullable=false)
 */
private $name;

我也通过Annotations尝试但它没有帮助。 我知道我可以提出约束条件。属性到我的表单,并设置新的NotBlank()但我想在实体级别进行验证,因为我将使用API​​,我想在一个地方而不是两个验证。

我的validation.yml文件是否被忽略或是什么?

修改 我没有提到一个重要的事情,即我的表格嵌入到另一个表格中。在这种情况下,您必须使用' cascade_validation'表单选项中的属性。

这个答案对我有很大帮助Symfony2 - Validation not working for embedded Form Type

1 个答案:

答案 0 :(得分:0)

您的配置似乎正确,但您的yml会被忽略,请尝试清除缓存。

你的validation.yml在哪里?它必须位于以下路径中:src / AppBundle / Resources / config / validation.yml

在注释示例中,没有验证约束,您必须在属性上添加@Assert \ NotBlank。 Nullable = false仅适用于您的数据库架构。

关于验证的Symfony doc:http://symfony.com/doc/current/cookbook/validation/custom_constraint.html#using-the-new-validator

关于使用validation.yml:Symfony2 how to load validation.yml

的相同问题