Symfony UniqueEntity Validation Message - PullRequest
       25

Symfony UniqueEntity Validation Message

0 голосов
/ 25 сентября 2018

У меня проблема с сообщением проверки, когда я использую 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 Ответ

0 голосов
/ 25 сентября 2018

Есть ли у вас {{ form_errors(form) }} в виде ветки?

...