Symfony 2 UniqueEntity и Валидиране на формуляр – Блог на Stafox – a

symfony

Има стандартна задача, с която всеки уеб разработчик трябва да се е сблъсквал: когато добавяте обект към базата данни, уверете се, че той все още не съществува и ако съществува, изведете съответното съобщение. Искам да споделя изпълнението на такава задача в Symfony 2.

Конкретен пример: необходимо е да се внедри функционалността за абониране за различни пощенски списъци.

Има няколко варианта как може да се направи това:

  • можете да закачите уникален индекс на полетата в таблицата и да хванете определена грешка с кода 23000.
  • можете предварително да изберете наличието на такъв запис в таблицата.

В случая с Доктрината вторият вариант е за предпочитане, т.к в първия случай, когато възникне грешка, Doctrine прекъсва връзката с базата данни. Ще ви покажа как да направите това автоматично с помощта на компонентите на Symfony.

Имаме нужда от компонента Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity. За да го използвате, трябва да добавите следното към src/SubscribeBundle/Resources/config/validation.yml:

полета - параметър, който показва за кои полета се отнася условието за уникалност. errorPath — параметър, който показва на кое поле да се закачи грешка (по подразбиране, първото поле от параметъраfields ) message — съобщение, което ще се показва, когато уникалността е нарушена.

Нека създадем формуляр и да предадем обекта Абонат към него.

Е, общо взето, това е всичко. За по-голяма яснота ще се опитам да споделя пакета за абониране в близко бъдеще.