Php Symfony2-以嵌入形式执行唯一验证

Php Symfony2-以嵌入形式执行唯一验证,php,forms,validation,symfony,doctrine,Php,Forms,Validation,Symfony,Doctrine,在一个项目中,我有一个实体客户与一个实体公司建立了多人关系。当客户注册时,他必须填写一份包含客户属性和公司名称的表格;因此,我将CompanyType嵌入到CustomerType表单中 问题在于验证:每个公司的名称都应该是唯一的,因此我在CustomerType中添加了'cascade_validation'=>true,在实体文件中添加了unique=true,并在公司名称上添加了validation@uniquentity。条令清楚地看到了这个错误,但是Uniquentity验证工作不正常

在一个项目中,我有一个实体客户与一个实体公司建立了多人关系。当客户注册时,他必须填写一份包含客户属性和公司名称的表格;因此,我将CompanyType嵌入到CustomerType表单中

问题在于验证:每个公司的名称都应该是唯一的,因此我在CustomerType中添加了'cascade_validation'=>true,在实体文件中添加了unique=true,并在公司名称上添加了validation@uniquentity。条令清楚地看到了这个错误,但是Uniquentity验证工作不正常,用户被重定向到一个500错误页面

我尝试了很多东西都没有成功,有人知道如何解决这个问题吗

这是我的档案:

在客户实体中:

/**
 * @ORM\ManyToOne(targetEntity="Site\UserBundle\Entity\Company", inversedBy="customers", cascade="persist")
 * @ORM\ JoinColumn(nullable=false)
 */
private $company;
在公司实体中

/**
 * Company
 *
 * @ORM\Table()
 * @ORM\Entity
 * @UniqueEntity(fields={"name"}, groups={"nameCompany"})
 */
class Company
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORM\OneToMany(targetEntity="Site\UserBundle\Entity\Customer", mappedBy="company")
 */
private $customers;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255, unique=true)
 */
private $name;
以客户的形式

public function buildForm (FormBuilderInterface $builder, array $options)
{
    $builder->add('company', new CompanyType(), array('validation_groups' => array('nameCompany')));
}

/**
 *
 * @param OptionsResolverInterface $resolver            
 */
public function setDefaultOptions (OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(
            array(
                    'data_class' => 'Site\UserBundle\Entity\Customer',
                    'cascade_validation' => true,
            ));
}
以公司形式:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', null,          
            array(
                    'label' => 'entity.customer.company',
                    'translation_domain' => 'SiteUserBundle'
            ));
}

/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Site\UserBundle\Entity\Company',
        'validation_groups' => array('nameCompany'),
    ));
}

提前非常感谢您的帮助

当公司名称是唯一的时,它是否能像预期的那样工作?好问题,@Cerad,是的,来自唯一验证的appart,一切都很好,你有什么用。。。单一性;尝试一个简单的@uniquentityname并确保清除缓存。您收到了什么错误消息?如果你没有得到任何东西,就进行开发。我假设您有一个$form->isValid;在我的公司实体。我使用的是FOSUserBundle,因此我假设在它的操作中有一个form->isValid。验证时,我收到以下消息:使用参数[expleCompany,0,none,2014-10-27 09:32:492014-10-27 09:32:49]:SQLSTATE[23000]执行“插入公司名称、信用、计划、日期订阅、endTrial值?、?、?、?、?、?、?”时发生异常:完整性约束冲突:密钥“UNIQ_800230D35E237E06”->SQL问题的1062重复条目“人员适合”