Можно все в контроллере сделать, но вроде не рекомендуется. А как правильно и правильно ли выносить это в сервис, или это делается как метод репозитория сущности?
Просто большая часть данных не передается в форме а генерируется. Производится загрузка изображения, у него есть данные о высоте, ширине, имя файла, расширение(формат), псевдоним, и IP адрес - все эти данные отсутствуют в самой форме, и предоставляются сервисом сохранения изображения (Imagine) после обработки и сохранения самого изображения.
В контроллере это приблизительно так
$entity = new Upload();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$entity = new Upload();
$form = $this->createForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$saver = $this->getSaver(); // Сервис сохранения, сжимает, сохраняет и предоставляет инфу
$image = $saver->save($entity->getImage());
$entity->setUserId(100); // Кто загрузил
$entity->setIp(ip2long($request->getClientIp())); // IP загрузившего
// достаточно геморно получать IP из сервисов, если правильно понял,
// в сервис для этого нужно передавать request_stack
// Ну и самый сок. Хочется этот кусок куда нибуди вынести,
// либо в репозиторий либо в сервис, но как не знаю
$entity->setFile($saver->getName());
$entity->setWidth($saver->getHeigth());
$entity->setHeight($saver->getWidth());
$entity->setExt($saver->getExt());
$entity->setAlias($saver->getAlias());
// Само сохранение сущности в базу
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
}
}
Подскажите пожалуйста направление действий.
Спасибо