Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+symfony] dwa pytania o dynamiczne slugi
Forum PHP.pl > Forum > PHP
dopelganger
cześć
mam dwa pytania o generowanie dynamicznych slugów. Nie mogę zrozumieć pewnych kwestii i wybaczcie (ale podobno nie ma głupich pytańsmile.gif więc pytam), otórz:

1.
- mam backendbundle - logowanie do admina jest pod adresem: example.com/admin
- mam frontendbundle- tutaj mam generowane adresy np: example.com/{slug}
no i nie mogę wejść na logowanie, adres: /admin, bo kontroler z frontendbundle szuka sluga (admin), którego nie ma w bazie. Jeśli go nie znajdzie robi przekierowanie na stronę główną serwisu.
Chciałbym, aby działało to niezależnie, a adres front ma wpływ na back. Tak więc nie mogę zalogować się do /admina smile.gif
W jaki sposób to rozdzielić?

2.
Adresy url mogą mieć kilka slugów, w bazie zapisuje sobie w polu link np:
/o-fimie
/o-fimie/kontakt
/artykuly/temat-glowny/artykul
/artykuly/temat-glowny/podtemat/artykul
... itd kombinacje mogą być do woli

wiadomo, że po lamersku mogę zrobić tak, że w kontrolerze będzie kilka akcji typu:
  1. /**
  2. * @Route("/{slug}", name="show1")
  3. */
  4. public function show1Action() {
  5. // ...
  6. }
  7.  
  8. /**
  9. * @Route("/{slug}/{slug2}", name="show2")
  10. */
  11. public function show2Action() {
  12. // ...
  13. }
  14.  
  15.  
  16. /**
  17. * @Route("/{slug}/{slug2}/{slug3}", name="show3")
  18. */
  19. public function show3Action() {
  20. // ...
  21. }


// itd

Jeśli to zrobię w taki spsoób, to ogranicze się do x slugów a może być więcej kombinacji, tak więc będe musiał ciągle zmieniać kontrolera jak dojdzie menu bardziej rozbudowane.
można to rozwiązać w jakikolwiek sposób? może jest coś dynamicznego smile.gifquestionmark.gifquestionmark.gif


Dzięki
Pozdrawiam





w sumie punkt 1. udało mi się zrobić i wklejam gdyby ktoś miał podobny problem,
wystarczy w pliku routing.yml przestawić kolejność, przed frontend dać fos_user:

  1. fos_user:
  2. resource: "@FOSUserBundle/Resources/config/routing/all.xml"
  3.  
  4. frontend:
  5. resource: "@FrontendBundle/Controller/"
  6. type: annotation
  7. prefix: /


a do 2. może inaczej,
czy można zapisać routing wewnątrz kontrolera w jednej akcji łącznie z szablonem który ma się ładować?
ohm
Otórz wink.gif

Ogólnie rozwiązań jest kilka w Twoim przypadku.
1. Prostsze, ale mało "dynamiczne", tworzysz sobie nowego bundla, np SlugBundle i w nim tworzysz kontroler wyłapujący dane slugi. Jego routing musisz trzymać zawsze jako ostatni w app/config/routing.yml
2. Możesz wykorzystać https://symfony.com/doc/master/cmf/bundles/...ml#installation + https://github.com/symfony-cmf/routing-bundle
3. Najlepsze rozwiązanie, czyli dopisać własne rozwiązania do routera z wykorzystaniem event listenera - http://marcjschmidt.de/blog/2013/11/30/sym...mic-router.html - dość prosty przykład jak możesz się dobrać do tego + oficjalna dokumentacja https://symfony.com/doc/current/components/...troduction.html
dopelganger
Cytat(ohm @ 4.07.2016, 17:05:42 ) *
Otórz wink.gif

Ogólnie rozwiązań jest kilka w Twoim przypadku.
1. Prostsze, ale mało "dynamiczne", tworzysz sobie nowego bundla, np SlugBundle i w nim tworzysz kontroler wyłapujący dane slugi. Jego routing musisz trzymać zawsze jako ostatni w app/config/routing.yml
2. Możesz wykorzystać https://symfony.com/doc/master/cmf/bundles/...ml#installation + https://github.com/symfony-cmf/routing-bundle
3. Najlepsze rozwiązanie, czyli dopisać własne rozwiązania do routera z wykorzystaniem event listenera - http://marcjschmidt.de/blog/2013/11/30/sym...mic-router.html - dość prosty przykład jak możesz się dobrać do tego + oficjalna dokumentacja https://symfony.com/doc/current/components/...troduction.html


ok dzieki za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.