Witam!
Od paru dni uczę się Symfony4. Chciałem więc przerobić jakiś kurs na praktycznych przykładach. Znalazłem na YT jeden z popularniejszych:
link do kursu "Up & Running With Symfony 4 - Part 3: Create, Update & Delete"
Nie mam problemu z samym kodem, ale z jego sensem. Od samego początku autor pisze metodę add w pliku kontrolera, która wygląda następująco (w części, o którą chcę zapytać):
public function new(Request $request) {
$article = new Article();
$form = $this->createFormBuilder($article)
->add('title', TextType::class, array('attr' =>
array('class' => 'form-control')))
->add('body', Textarea::class, array(
'required' => false,
'attr' => array('class' => 'form-control')
))
->add('save', SubmitType::class, array(
'label' => 'Create',
'attr' => array('class' => 'btn btn-primary mt-3')
))
->getForm();
return $this->render('articles/new.html.twig', array(
'form' => $form->createView()
));
}
Natomiast plik new.html.twig wygląda tak:
{% extends 'base.html.twig' %}
{% block title %}New Article{% endblock %}
{% block body %}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
{% endblock %}
Generalnie kod w tej części ma na celu wygenerowanie formularza. Oczywiście dalej następuje przechwytywanie wartości pól, walidacja, aktualizacja bazy o nowe wartości etc, ale moje pytanie dotyczy stricte generowania tego formularza.
Autor wygenerował cały formularz wraz z jego atrybutami w kontrolerze, ale po co? Przecież cały formularz można zapisać w pliku widoku czystym HTML'em i Twig'iem, a w metodzie kontrolera zostawić samo renderowanie pliku widoku. Czy jest to poprawne/zalecane wyjście i czy w ogóle ma sens? Czy nie jest to lekkie mieszanie widoku z kontrolerem? Pytam głównie dlatego, że autor w kursie nie stosuje dobrych praktyk, albo stosuje złe (w samej powyższej metodzie jest: nazywanie metody słowem zarezerwowanym, nie przestrzeganie standardu PSR, przestarzały zapis tablic, itd.), dlatego mam wątpliwości również co do rozwiązania generowania formularza przez kontroler.
Jeżeli jednak jest to jedna z dobrych praktyk to proszę o wyjaśnienie dlaczego lub o jakiś link z wyjaśnieniem tego wątku :)
Z góry dziękuję za odpowiedź!