Forms Symfony2从表单类内部验证Uniquentity

Forms Symfony2从表单类内部验证Uniquentity,forms,validation,symfony,unique-constraint,Forms,Validation,Symfony,Unique Constraint,问题很直截了当,我认为: 我的表单中需要唯一的值验证器,我可以通过这样做来实现: use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; /** * DataClass * * @ORM\Table(name="data_class", uni

问题很直截了当,我认为:

我的表单中需要唯一的值验证器,我可以通过这样做来实现:

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * DataClass
 *
 * @ORM\Table(name="data_class", uniqueConstraints={@ORM\UniqueConstraint(columns={"gu"})})
 * @ORM\Entity
 * @UniqueEntity(
 *      fields={"gu"},
 *      ignoreNull=true
 * )
 */
class DataClass
{

/**
 * @var string
 *
 * @ORM\Column(name="gu", type="string", length=45, nullable=false, unique=true)
 * @Assert\NotBlank
 */
private $gu;    
...
}
但我真正不希望的是避免在实体中定义逻辑,而是在表单类中定义逻辑

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => '****\****\Entity\DataClass',
        'constrains' => array(
            new UniqueEntity(array(
                'fields' => array('gu')
            ))
        )
    ));
})

但是这不起作用,所以我可以在表单类中使用此约束吗?如果可以,我做错了什么?

为您的实体创建验证。您可以使用批注或验证文件。您必须将约束与类的属性相关联,而不是将约束与表单的字段相关联

Resources/config/validation.yml:

****\**** \Entity\DataClass:
    constraints:
        - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: gu
             ignoreNull: true