Wpis z mikrobloga

Jest tu jakiś spec od Symfony co by mi podpowiedział jak mogę (i czy w ogóle) wyświetlić na tej samej stronie, na tym samym twigu (albo dwóch z jakimiś includami czy renderami, nie wiem) rekordy z bazy i formularz przy użyciu dwóch różnych controllerów (jeden wyświetla dane z bazy, drugi pobiera dane z formularza)?

Ogólnie to mam wyświetloną tabele z rekordami i chce zrobić formularz dodający rekord do tej tabeli - jest sobie tabelka a na dole przycisk, użytkownik wciska przycisk, formularz się rozwija, użytkownik wpisuje dane, zatwierdza, odświeża się strona już z nowo-dodanym wierszem tabeli.

Wydaje mi się, że ściskanie tego w jednym kontrolerze nie jest dobrą praktyką, a tworzenie kolejnego twiga w sumie z tym samym + formularz jest bez sensu.

#php #symfony #programowanie
  • 11
@Arveit: A jednak nie do końca. Formularz działa jedynie jak ustawie w tym kontrolerze routing, przejdę pod ten adres i tam zatwierdze formularz, natomiast jako ten dołączany kontroller do kontrolera z tabelą - nic się nie dodaje
@alfabetaborzy: Używasz controllerów niezgodnie z ich przeznaczeniem. Controller jest od obsługi requestu HTTP, jest jeden request, więc i nie ma potrzeby więcej niż jednego controllera.

Tak tylko mówię, chociaż wiem, że i tak to zignorujesz i będziesz się pchać w dalsze problemy. ¯\_(ツ)_/¯
@zakopiak: no właśnie nie chce się pchac w coś bez sensu, symfony dopiero poznaje, a ta ich dokumentacja nie jest super obszerna. Mam sobie kontroler i w nim jedną funkcje do wyświetlania danych, a drugą do dodawania danych. Żeby było bardziej user friendly chciałem to zawrzec w jednym twigu. Wczesniej #!$%@?łem pojęcia, kontroler jest jeden, ale dwie funkcje w tym kontrolerze - show() i add(). W zasadzie to zrobilem tak jak
natomiast jak odświeże strone to te same wartości dodają się ponownie i na tym się zatrzymałem szukając przyczyny, której jeszcze nie znalazłem.


@alfabetaborzy: po dodaniu/edycji modelu powinien iść redirect użytkownika (w twoim przypadku na show), właśnie żeby zapobiec takim sytuacjom.

Co do osadzania kontrolera w widoku, to jak już napisał @zakopiak to zła praktyka. Co prawda dokumentacja Symfony pozwala tak robić w wyjątkowych sytuacjach, ale lepiej żeby to było odseparowane do
W sensie że np w kontrolerze pobieram dane przy pomocy Doctrine i EntityMenagera, ale nie renderuje twiga tylko przekazuje te dane... no właśnie, w tutorialach zawsze jest renderowanie i przekazywania do twiga, już się pogubiłem jaka jest ta dobra praktyka
symfony dopiero poznaje, a ta ich dokumentacja nie jest super obszerna.


@alfabetaborzy: IMHO jest dość mocno obszerna. Ale nie myl dokumentacji i guide'ów z use case'ami z materiałami do nauki programowania jako takiego. Ty wyraźnie potrzebujesz podszkolić się z programowania.

Wydaje mi się, że ściskanie tego w jednym kontrolerze nie jest dobrą praktyką, a tworzenie kolejnego twiga w sumie z tym samym + formularz jest bez sensu.


Kontroler nie jest od
@zakopiak: no ogólnie to robię tak jak napisałeś, w akcjach mam głównie albo wywołanie repozytoriów albo tworzenie formularzy i flushowanie do bazy.
W tym przypadku który opisałem, zastanawiałem się czy dobrą praktyką jest jedna akcja łącząca np wywoływanie repozytorium + tworzenie formularza i przesyłanie go do templatki czy lepiej to zrobić w dwóch oddzielnych akcjach i połączyć w jedno przy pomocy embedded controllers.
Zrobiłem teraz to wszystko w jednej akcji no