На мой взгляд, нет ничего плохого в использовании форм в Controller.Однако, если вы хотите сохранить свои контроллеры тонкими, вы можете перенести свою бизнес-логику в сервисы.Например:
App \ Controllers \ HomeController:
class HomeController extends Controller
{
// Inject ArticleService
public function index(Request $request, ArticleServiceInterface $articleService)
{
$article = new Article();
$form = $this->createForm(ArticleType::class, $article);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$articleService->create($form->getData());
return $this->redirect("/");
}
return $this->render('home/home.html.twig', [
'form' => $form->createView()
]);
}
}
App \ Services \ ArticleService:
class ArticleService implements ArticleServiceInterface
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager) {
$this->entityManager = $entityManager;
}
public function create(Article $article)
{
// you may do some extra stuff here
$this->entityManager->persist($article);
$this->entityManager->flush();
}
}
Это полный излишек в этом конкретном примере, нодает представление о том, как это может быть.
Подробнее в Документация Symfony .