symnoob, Создайте DTO, привяжите к форме, дальше сохраняйте как хотите.
П. С Вообще привязывать сущность к форме - это плохая практика, используйте DTO
Дмитрий, потому что сущность должна оставаться валидной всегда, а в случае с формой мы можем заполнить ее неверно, и потом где-нибудь под капотом в листенере вызывать $entityManager->flush(), т.о. невалидная сущность сохранится. Плюс, очень часто бывает, что сущность не маппится один в один на форму и тогда начинаются танцы с бубном, приходится создавать какие-то поля, которые для самой сущности не имеют никакого значения, а нужны только для UI
BoShurik, для неверного заполнения у нас есть constraints. А вот про один в один - такое сплошь и рядом. Но где именно вы делаете создание/извлечение сущности из данных дто? Сервис, репозиторий?
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
return $this->redirectToRoute('index');
} else {
// Тут сущность находится в невалидном состоянии и если, случайно вызывать (может в каком-нибудь листенере)
// $entityManager->flush(); то оно сохранится в БД
}
У меня для этого отдельный сервис (маппер), получается что-то вроде: