我认为问题很简单:
我需要在表单中使用唯一的值验证器,我可以通过执行以下操作来实现此目的:
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;
...
}
但我真的不想避免在Entity中定义逻辑,而是在表单类中定义它(类似这样
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => '****\****\Entity\DataClass',
'constrains' => array(
new UniqueEntity(array(
'fields' => array('gu')
))
)
));
})
然而,这不起作用,所以我可以在表单类中使用此约束,如果是这样,我做错了什么?
答案 0 :(得分:0)
为您的实体创建验证。您可以使用注释或验证文件。您必须将它们与类的属性相关联,而不是将约束与表单的字段相关联。
<强>资源/配置/ validation.yml:强>
****\**** \Entity\DataClass:
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: gu
ignoreNull: true