Проблема с проверкой уникальности Symfony

#php #symfony #validation

#php #symfony #проверка

Вопрос:

Я попытался использовать ограничение уникальности для простого объекта. Проблема в том, что я перенаправляю на страницу ошибки, и у меня нет никакого сообщения об ошибке под моим полем.

Вот моя сущность :

 use DoctrineORMMapping as ORM;
use SymfonyComponentValidatorConstraints as Assert;
use SymfonyBridgeDoctrineValidatorConstraintsUniqueEntity;

/**
 * Plant
 *
 * @ORMTable(name="plant")
 * @UniqueEntity(fields="name", message="Champ unique")
 * @ORMEntity(repositoryClass="MyBundleRepositoryPlantRepository")
*/
class Plant
{
/**
 * @var int
 *
 * @ORMColumn(name="id", type="integer")
 * @ORMId
 * @ORMGeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORMColumn(name="name", type="string", length=255, unique=true)
 */
private $name;

/**
 * @var Boolean
 *
 * @ORMColumn(name="upstream", type="boolean", nullable=true)
 */
private $upstream;

/**
 * @var Boolean
 *
 * @ORMColumn(name="downstream", type="boolean", nullable=true)
 */
private $downstream;

// Some getters / setters
  

Я следовал документации: присвоил атрибуту значение unique=true , присвоил классу уникальность и добавил use SymfonyBridgeDoctrineValidatorConstraintsUniqueEntity;

И у меня всегда есть эта ошибка на странице ошибок :

 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'
  

Я искал решение по другой теме, но ничего не работает, и я не понимаю, где ошибка.

Кто-нибудь знает, как с этим справиться?

Ответ №1:

Я не решался удалить свой вопрос, потому что ответ немного глуповат. Но я надеюсь, что это может быть кому-то полезно.

Это не могло сработать, потому что в контроллере я забыл использовать:

 $form->isValid()
  

Итак, теперь в контроллере я добавил это:

 $request->isMethod('POST') amp;amp; $form->handleRequest($request)->isSubmitted() amp;amp; $form->isValid()
  

И теперь все работает нормально. Я получаю сообщение об ошибке под полем формы.