Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF2][SF] Routing - adresy {slug} w ramach 3 roznych kontrolerow
Forum PHP.pl > Forum > PHP > Frameworki
swiezak
Pytanie dotyczy zagadnienia routingu w SF 2.
Czy jest mozliwosc ustawienia adresow url dla kategorii, marek i produktow w taki sposob, aby byly one w formacie: http://nazwadomeny/{slug} w ramach 3 roznych kontrolerow, tak jak na ponizszym listingu?

  1. _brand:
  2. pattern: /{slug}
  3. defaults: { _controller: MlFrontendBundle:Brand:showbrand, slug: index }
  4.  
  5. _product:
  6. pattern: /{slug}
  7. defaults: { _controller: MlFrontendBundle:Product:showproduct, slug: index }
  8.  
  9. _category:
  10. pattern: /{slug}
  11. defaults: { _controller: MlFrontendBundle:Category:showcategory, slug: index }
ohm
A jak chcesz rozróżniać te slugi? Bo "jakasnazwa" może byc kategorią lub np., produktem
Damonsson
Symfony2 pod tym względem działa fajnie, jak nie znajdzie w 1. to lecie do drugiego itd. Także musisz tylko sobie założyć unikalność nazw i możesz stosować taki routing.
swiezak
W tej chwili podane przeze mnie dyrektywy w routing.yml probowalem wcielic w zycie, ale SF 2 buntuje sie.
Gdy system napotka na adres w stylu: http://nazwadomeny/adidas (nazwa marki) jest ok, ale gdy wpisze kolejny adres http://nazwadomeny/buty-sportowe (nazwa kategorii) routing sie wysypuje i zwracane jest 404.
Jak temu zaradzic? Nazwy sa unikalne, ale te dwa kontrolery (od marki i kategorii) "gubia sie".
pyro
Takie rozwiązanie jest mówiąc prostymi słowami - co najmniej nierozsądne.

Raz że narażasz się na konflikty nazw, dwa że nawet jakieś roboty indeksujące itp. będą miały problem z rozróżnieniem co jest czym.

Ale rozumiem, że robisz to po to, zeby zrobić innemu programiście na złość (ewentualnie sobie). Możesz w takim przypadku po prostu zrobić jeden routing na wzorzec /{slug}, i w kontrolerze po kolei sprawdzać czy istnieje taki produkt / kategoria / ... / else 404, a następnie robić forward() do innej akcji.
swiezak
Url'e z ujednoliconym parametrem {slug} nie sa moim wymyslem. To odgorna decyzja szefostwa.
pyro
Zmień miejsce pracy tongue.gif
swiezak
Miejsce pracy mozna zawsze zmienic, ale czy to sie bedzie oplacac to juz inna sprawa ;-)
Crozin
Jeżeli nie ma żadnego wzorca, który pozwalałby na rozróżnienie czy mamy do czynienia z zasobem typu A, B czy C nie ma raczej innej możliwości niż ta, o której wspomniał @pyro, tj. jeden routing do akcji, która próbuje pobrać zasób A, B lub C na podstawie sluga, a następnie robi forwarda do odpowiedniego kontrolera.
swiezak
Dzięki Panowie za podpowiedź.

Pozdrawiam.
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.