grabbee
@grabbee

Где в symfony2 правильно производить сохранение сущности?

Можно все в контроллере сделать, но вроде не рекомендуется. А как правильно и правильно ли выносить это в сервис, или это делается как метод репозитория сущности?

Просто большая часть данных не передается в форме а генерируется. Производится загрузка изображения, у него есть данные о высоте, ширине, имя файла, расширение(формат), псевдоним, и 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();
                }
            }

Подскажите пожалуйста направление действий.
Спасибо
  • Вопрос задан
  • 347 просмотров
Решения вопроса 1
dvzzz
@dvzzz
PHP, Symfony
Все нормально тут. Не имеет смысла выносить этот код. Сохранять сущность в контроллере вполне Symfony Best Practices
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы