Validation 使用Symfony中的实体断言验证表单

Validation 使用Symfony中的实体断言验证表单,validation,symfony,entity,yaml,Validation,Symfony,Entity,Yaml,我想在实体类中使用断言来验证表单,但当我提交表单时,它会说$form->isValid()为true 下面是我如何设置它的: // config.yml validation: { enabled: true, enable_annotations: false } // validation.yml Software\Bundle\Entity\Program: properties: name: - NotBlank: ~ //

我想在实体类中使用断言来验证表单,但当我提交表单时,它会说$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;
我也尝试通过注释,但没有帮助。 我知道我可以将“constraints”属性放在我的表单中,然后设置new NotBlank(),但我希望在实体级别进行验证,因为我将使用一个API,我希望在一个位置而不是两个位置进行验证

我的validation.yml文件被忽略了吗

编辑 我没有提到一件重要的事情,那就是我的形体嵌入了另一个形体。在这种情况下,必须在表单选项中使用“cascade\u validation”属性


这个答案对我帮助很大

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

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

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

关于验证的Symfony文档:


关于使用validation.yml的相同问题:

它位于src/Software/Bundle/Resources/config文件夹中。我知道我的示例不包含@Assert\NotBlank(),因为我想通过.yml文件使用它。我只提到我也试过使用注释,但也不起作用。我甚至试过下面的解决方案,但没有帮助。不知道为什么它不起作用,你试过了吗?或者在实体中使用资产?也就是说,它现在可以工作了?