如何让 Symfony2 表单生成器在数据库中签入作为验证的一部分


how to have symfony2 formbuilder check in DB as part of validation

在允许表单插入值之前检查值是否已经存在的最佳方法是什么?如果已经有一个具有指定用户名的用户,我希望表单验证为 false。我想某处的独特约束会在这里做,但要更全面,或者能够以更自定义的方式检查值。假设一个客户帐户中有多个管理员帐户,它们都具有降级其他管理员的权限,我希望能够进行的一项检查是您是否禁用了最后一个管理员(如果是这样,请阻止降级操作,并在表单上显示一条很好的错误消息......

例如,我可以从我的formType中访问实体管理器,还是必须以解决方法的方式从控制器传递?

    $builder
        ->add('username', 'text', array('label' => 'Användarnamn '))
        ->add('email', 'email', array('label' => 'Epost '))
        ->add('plainPassword', 'repeated', array('type' => 'password', 'first_name' => 'Lösenord ', 'second_name' => 'Upprepa lösenord',));

应创建自定义验证约束,并注入EntityManager以访问数据库。