![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Cześć. Startuję z frameworkiem Symfony2 i mam kilka pytań.
W jaki sposób tworzycie stronę? Czy każdy bundle to osobny moduł? Np. auth (logowanie, rejestracja), strony statyczne, galeria? Co w takim wypadku, gdy chciałbym stworzyć profile użytkowników? To też osobny bundle czy to jeszcze w auth? Kolejna sprawa, co z templatkami? Czy stworzyć sobie bundle, który definiować będzie główny szablon z treścią niezmienną? A inne bundle (moduły/podstrony) miały by się do tego odwoływać? W jaki sposób zbudować panel administracyjny? Czy to też kolejny bundle? Jakaś obsługa logowania? Osobna templatka? Czy może w każdym bundle definiowanie funkcji administracyjnych? Z góry dzięki za udzielenie konkretnych odpowiedzi. Wiem, że odpowiedź na moje pytania może być "rób, jak Ci łatwiej". Ale wolałbym wiedzieć, jakie są standardy, który powiedzmy większość programistów wykorzystuje. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1) Jeśli chodzi o templaty to zrób sobie ogólny template: app/Resources/views/base.html.twig. Następnie zrób sobie Twig_Extension np: LayoutResolver z metodą, która będzie zwracać ci odpowiedni widok (czy template admin, user, ajax, itp..).
2) Bundle to już robisz wedle uznania. Ja bym zrobił bundle AuthBundle (logowanie, wylogowanie, przypomnienie hasła itp...) oraz UserBundle (edycja profili, tworzenie itp...). Oczywiście panel administracyjny zawierał by się w tych bundlach ale (czasem) żeby to były inne kontrolery, np: UserBundle/Controller/Admin/IndexController albo UserBundle/Controller/User/IndexController. Oczywiście to już jest kwestia tego czego dokładnie chcesz zrobić bo każdy i tak zrobi to inaczej bo nie ma idealnego przepisu na to. Pozdrawiam. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Też zaczynam zabawę - ogólnie wg. mnie w danym bundlu powinna się znaleźć kompletna aplikacja minus powtarzalne elementy. Przykładowo jak robisz forum, to wg. mnie powinieneś mieć 1 bundla + ewentualnie powtarzalne elementy wydzielić do innych - przez powtarzalne elementy rozumiem np. kwestie rejestracji/modyfikacji użytkowników, jakieś zarządzanie uploadem grafiki/plików itp. Czyli innymi słowy, jak widzisz, że piszesz coś co się przyda w innej aplikacji, to wydzielasz to do osobnego modułu.
U mnie jest tak, że jak pomyślę "o to by się przydało wydzielić do bundla", to się okazuje, że już ktoś tak pomyślał i taki bundel już jest do pobrania ;-) Moim zdaniem nie ma sensu sztucznie mnożyć bundli - jeśli coś jest indywidualnie pisane pod jeden projekt, to nie ma sensu z tego robić sztucznie modułu. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Trochę dawno temu ostatnio ktoś tu zaglądał. Pozwolę sobie odkopać.
To i ja dodam od siebie. 1) Podstawowa struktura Ja przyjąłem że każdy bundle ma określone zadanie, każdy z bundli spełnia tylko tą rolę do której został stworzony i najlepiej nic poza tym. Staraj się nie rozbijać kodu po kilku bundlach, bo jak aplikacja Ci się rozrośnie to będziesz miał problemy z zarządzaniem. Nie sugeruję tworzenia bundli precyzyjnie pod widoki, encje, transformery itp, wręcz przeciwnie - odradzam. Dlaczego? Pomyśl sobie że masz prostą apkę, na przykład... Blog? Powiedzmy że masz gdzieś tam upchany kalendarz który jako widget używa Twojego transformera (nie ważne w jaki sposób i po co). Teraz pomyśl że ten widget znajduje się w : - SuperClockBundle a transformer w : - DataTransformersBundle Jaki jest sens trzymania go tam jeżeli owy kalendarz zniknie ze strony? (dobra, przykład może się średnio udał, ale liczy się fakt). poza tym, łatwiej zarządzać aplikacją jeżeli dany bundle pełni konkretną rolę. Nie każdy z moich bundli ma controllery i widoki! 2) Templatki 1) Jeśli chodzi o templaty to zrób sobie ogólny template: app/Resources/views/base.html.twig. Następnie zrób sobie Twig_Extension np: LayoutResolver z metodą, która będzie zwracać ci odpowiedni widok (czy template admin, user, ajax, itp..). [...] Ja przyjąłem zasadę że główny template przeważnie ląduje w app/Resources/views jak @Fluke proponował. Poza tym, wszystko leci po staremu, każdy bundle w zależności od potrzeb rozszerza albo ::base.html.twig albo inną konkretnie mu potrzebną. 3) Admin Nie wiem jak inni, ale moim zdaniem warto jest robić sobie "paczki". Od tego masz namespace aby Ci się wygodniej z tym pracowało (przykład może nie najlepszy). Struktura Ja przyjmuję strukturę "paczkowania" jeżeli aplikacja ma taki wymóg. /src ----/Admin --------/ABCBundle --------/ABDBundle --------/XYZBundle ----/Website --------/QWEBundle --------/Package ------------/P1Bundle ------------/P2Bundle --------/CosBundle ----/RestApiBundle Templatka - w zależności od tego co panel ma za zadanie robić, możesz obudować templatki (twig?) o jakąś logikę dostarczaną przez controller i w nich decydować, bądź potraktować panel admina jako osobny "projekt" i jak w przykładzie wyżej ogarnąć go jak "Website" Logowanie - Jeżeli admin jest innym userem, czytaj - musi się zalogować loginem nie dostępnym z poziomu formularza dla normalnego użytkownika, to zapewne wypadało by "podpiąć" 2gą metodę autoryzacji, jeżeli ma dostęp tym samym kontem zarówno w Website jak i w Admin, to Role wystarczą. Funkcje administracyjne w każdym bundle - zależy od przyjętej strategii. Zazwyczaj operujesz na bazie danych, nie na czystym tekście itp. Tak więc uważam że Panel powinnien być traktowany jako osobna aplikacja - obudowana o swoje bundle które "sprawiają" że działa (patrz przykład struktury wyżej). W razie pytań wal. Pozdrawiam Ten post edytował kpt_lucek 26.10.2014, 02:56:48 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj: http://symfony.com/doc/download-best-practices-book/
Nie ma potrzeby zawsze i wszędzie robić bundli na potegę jak ku temu nie ma powodu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 21:57 |