Trochę dawno temu ostatnio ktoś tu zaglądał. Pozwolę sobie odkopać.
To i ja dodam od siebie.
1) Podstawowa strukturaJa 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) TemplatkiCytat(Fluke @ 4.10.2014, 14:26:35 )

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) AdminNie 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).
StrukturaJa 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