@gitdev

Можно ли и нужно ли и нужно ли выносить Symfony форму в сервис или её лучше оставить в контреллере?

1. Можно ли выносить форму в сервис?
2. Нужно ли выносить форму?
3. Можно ли этот код(кроме рендеринга view) вынести в сервис(пишут ли так)?
public function present(Proposition $proposition, Request $request, CVService $CVService): Response
    {
        $candidate = new Candidate();
        $form = $this->createForm(CandidateType::class, $candidate);
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            if($CVService->present($proposition, $candidate)) {
                $this->addFlash(
                    'success',
                    'CV was sent'
                );
            } else {
                $this->addFlash(
                    'error',
                    'We got an error, CV was not sent'
                );
            }
            $candidate = new Candidate();
            $form = $this->createForm(CandidateType::class, $candidate);
        }
        return $this->render('cv/present.html.twig', [
            'form' => $form->createView(),
        ]);
    }
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
@Flying
  1. В Symfony best practicies рекомендуют, да
  2. Собственно см.п.1. В частности это улучшает поддерживаемость кода, особенно в случае более-менее сложных форм или форм, требующих дополнительной логики инициализации / конфигурирования. Собственно ваш код как раз и использует форму как сервис, попробуйте скопировать содержимое класса CandidateType сюда и сравнить полученный код.
  3. Код обработки формы скорее всего выносить в сервис не стоит т.к. он прямо завязан на преобразование Request => Response, а для этого контроллеры и существуют.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы