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