#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()
И теперь все работает нормально. Я получаю сообщение об ошибке под полем формы.