我试图在一个简单的实体上使用UniqueEntity约束。问题是,我在错误页面上重定向,并且在字段下方没有任何错误消息。
这是我的实体:
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* Plant
*
* @ORM\Table(name="plant")
* @UniqueEntity(fields="name", message="Champ unique")
* @ORM\Entity(repositoryClass="MyBundle\Repository\PlantRepository")
*/
class Plant
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, unique=true)
*/
private $name;
/**
* @var \Boolean
*
* @ORM\Column(name="upstream", type="boolean", nullable=true)
*/
private $upstream;
/**
* @var \Boolean
*
* @ORM\Column(name="downstream", type="boolean", nullable=true)
*/
private $downstream;
// Some getters / setters
我遵循了文档:将属性设置为unique=true
,将uniqueEntity设置为该类并添加use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
我总是在错误页面上看到此错误:
An exception occurred while executing 'INSERT INTO plant (name, upstream, downstream) VALUES (?, ?, ?)' with params ["XXXX", 0, 1]:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'XXXX' for key 'UNIQ_AB030D725E237E06'
我正在寻找有关其他主题的解决方案,但是没有任何效果,我不知道错误在哪里。
有人知道如何处理吗?
答案 0 :(得分:1)
我犹豫要删除我的问题,因为答案有点愚蠢。但我希望它对某人有用。
它无法工作,因为在控制器中,我忘了使用:
$form->isValid()
所以现在在控制器中添加了它:
$request->isMethod('POST') && $form->handleRequest($request)->isSubmitted() && $form->isValid()
现在一切正常。我在表单字段下方收到错误消息。