Symfony UniqueEntity验证消息

时间:2018-09-25 08:41:54

标签: php symfony validation annotations doctrine

当我使用UniqueEntity时,验证消息有问题。

这是我的代码:

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator;

/**
 * LaboratoryTestRequest
 *
 * @ORM\Table(name="laboratory_test_request")
 * @ORM\Entity(repositoryClass="...\...Bundle\Repository\...Repository")
 * @UniqueEntity(fields={"num"}, message="It looks like the num is already use !")
 */
class MyClass
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
 private $id;

/**
 * @var string
 *
 * @ORM\Column(name="num", type="string", length=255, unique=true)
 */
 private $num;

问题是,当我提交已使用“ num”的表单时,我没有唯一约束的“ message”。表单已提交,我有此错误:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicata ... for the 
key 'Uniq_80B6DC...'

我不明白为什么邮件在表单中没有显示出来。也许我忘记了一些东西,但我不知道缺少什么,因为这就像文档一样。

感谢您的帮助。

编辑

我发现了问题所在。那是在控制器中。验证约束均无效。问题是这样的:

if($request->isMethod('POST') && $form->handleRequest($request)->isSubmitted())
{
...
}

在此代码中,我不验证该表单是否有效,我认为isSubmitted对此进行了验证,但无效。 因此,我目前发现的解决方案是添加isValid()方法,如下所示:

if($request->isMethod('POST') && $form->handleRequest($request)->isSubmitted())
{
...
}

像这样,我的表单中出现错误消息。 只是有一个小问题,表单已提交,然后我返回带有错误消息的表单,就像我想要的一样,数据库中什么也没有保存。

但是,如果有可能我想在单击提交按钮之后直接显示错误消息。 因此,如果有人要共享其他解决方案或升级此解决方案,我暂时打开该话题。

1 个答案:

答案 0 :(得分:0)

在树枝视图中是否有{{ form_errors(form) }}