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

Има стандартна задача, с която всеки уеб разработчик трябва да се е сблъсквал: когато добавяте обект към базата данни, уверете се, че той все още не съществува и ако съществува, изведете съответното съобщение. Искам да споделя изпълнението на такава задача в Symfony 2.
Конкретен пример: необходимо е да се внедри функционалността за абониране за различни пощенски списъци.
Има няколко варианта как може да се направи това:
- можете да закачите уникален индекс на полетата в таблицата и да хванете определена грешка с кода 23000.
- можете предварително да изберете наличието на такъв запис в таблицата.
В случая с Доктрината вторият вариант е за предпочитане, т.к в първия случай, когато възникне грешка, Doctrine прекъсва връзката с базата данни. Ще ви покажа как да направите това автоматично с помощта на компонентите на Symfony.
Имаме нужда от компонента Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity. За да го използвате, трябва да добавите следното към src/SubscribeBundle/Resources/config/validation.yml:
полета - параметър, който показва за кои полета се отнася условието за уникалност. errorPath — параметър, който показва на кое поле да се закачи грешка (по подразбиране, първото поле от параметъраfields ) message — съобщение, което ще се показва, когато уникалността е нарушена.
Нека създадем формуляр и да предадем обекта Абонат към него.
Е, общо взето, това е всичко. За по-голяма яснота ще се опитам да споделя пакета за абониране в близко бъдеще.