Wyjaśniłby ktoś jak ogarnąć serwisy w Symfony ?

Odpowiedz Nowy wątek
2019-01-20 10:47
0

Witam czy ktoś kto ma czas i chęci mógłby mi wyjaśnić lub nakierowac jak używac serwisy np jak chce sie zapytania do bazy robic itd... Aby controllery nie byly duze tylko jak najbardziej wychudzone ? Może tutaj może pw ? Bede bardzo wdzięczny za każda wskazówke.

Pozostało 580 znaków

2019-01-20 14:40
0

W dokumentacji Symfony masz to dobrze wyjaśnione.

Co do zapytań - nie trzymaj ich w kontrolerze, tylko w repozytorium. W kontrolerze po prostu sobie już wywołujesz gotowe zapytanie (co najwyżej podajesz kilka zmiennych), a repozytorium przekazujesz w parametrze akcji (jeśli masz włączony autowiring, to nie musisz nawet deklarować nowego serwisu).

edytowany 1x, ostatnio: serek, 2019-01-20 14:40

Pozostało 580 znaków

2019-01-20 20:23
1

Musisz użyć czegoś, co się nazywa dependency injection. Tworzysz serwis, a do serwisu w konstruktorze przekazujesz repozytorium. Później używasz serwisów w controllerach. Przerób jakiś tutorial, to załapiesz ;) Polecam https://symfonycasts.com/ tam Cie prowadzą za rączką od początku do końca.

Pozostało 580 znaków

2019-01-21 16:47
2

Z tym odchudzaniem kontrolerów tez nie ma co przesadzać, ale jak chłopaki wspomnieli:

  • zapytania / jakieś funkcje np. generowanie określonego ciągu itp wrzucasz do serwisu, który potem wstrzykujesz przez DI (dependency injection),
  • custom query najlepiej wrzucać do repository określonej encji jako nową funkcję, zamiast trzymać taki kod w serwisie / kontrolerze.

Pozostało 580 znaków

2019-01-21 19:13
1
Limitless napisał(a):

Z tym odchudzaniem kontrolerów tez nie ma co przesadzać, ale jak chłopaki wspomnieli:

Można tez kierować się ogólna zasada, która brzmi, ze controller to nic innego jak IO i powinien się w nim znajdować kod specyficzny dla danego IO. Wyciąganie danych z formularza, generowanie odpowiedzi, czy to JSON, czy HTML, jakieś flash message itp. Reszta warstwę niżej. Innym IO może być command i w takim commandzie również jest kod specyficzny dla tego IO, czyli operacje na Input/Output Stream itd.

Dzięki temu właśnie można bez problemu do każdego controllera dorobić command i na odwrót używając wydzielonych wcześniej klas.

edytowany 1x, ostatnio: Desu, 2019-01-21 19:13

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0