Symfony UniqueEntity 验证消息
Posted
技术标签:
【中文标题】Symfony UniqueEntity 验证消息【英文标题】:Symfony UniqueEntity Validation Message 【发布时间】:2019-02-28 19:53:54 【问题描述】:我在使用 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”的表单时,我没有唯一约束的“消息”。表单已提交,但出现此错误:
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】:你的树枝视图中有 form_errors(form)
吗?
【讨论】:
是的,因为我使用 form_row(form.num)以上是关于Symfony UniqueEntity 验证消息的主要内容,如果未能解决你的问题,请参考以下文章