当我使用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())
{
...
}
像这样,我的表单中出现错误消息。 只是有一个小问题,表单已提交,然后我返回带有错误消息的表单,就像我想要的一样,数据库中什么也没有保存。
但是,如果有可能我想在单击提交按钮之后直接显示错误消息。 因此,如果有人要共享其他解决方案或升级此解决方案,我暂时打开该话题。
答案 0 :(得分:0)
在树枝视图中是否有{{ form_errors(form) }}
?