Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Routing + zagnieżdżone kategorie
Forum PHP.pl > Forum > PHP > Frameworki
Łukasz Piotr Łuczak
Witam,

z góry przepraszam jeśli mój problem jest banalny. Próbowałem znaleźć rozwiązanie w internecie niestety bez efektu, dlatego też będę wdzięczny za wszelką możliwą pomoc.

Otóż sprawa przedstawia się następująco. Robię pewien projekt, nie jest to nic niezwykłego ani nadzwyczaj odkrywczego - raczej sztuka dla sztuki by jak najlepiej poznać Zend Framework. Pracuję na wersji numer 1 jeśli to ma znaczenie. A przechodząc do sedna.

Potrzebowałbym Waszej pomocy w opracowaniu reguł dla routera pozwalających na wyłapanie następujących adresów:

1) /katalog/kategoria/podkategoria/podpodkategoria/podpodpodkategoria/....

Czyli po prostu w adresie pełne odzwierciedlenie ścieżki. W tym wypadku interesuje mnie wartość ostatniej kategorii, pozostałe można pominąć. Dobrze by jednak było bym za pomocą helpera Url mógł utworzyć taki adres. Prefiks "katalog" jest wartością stałą.

2) /katalog/kategoria/podkategoria/podpodkategoria/podpodpodkategoria/..../poppodpodpodpodkategoria/artykuł

Tutaj podobnie jak w punkcie 1 z tą różnicą, że na końcu dochodzi jeszcze artykuł. Z tego adresu interesuje mnie wartość ostatniej kategorii oraz artykułu

3) /katalog/1_kategoria/31_podkategoria/34_podpodkategoria/45_podpodpodkategoria/..../78_poppodpodpodpodkategoria/1_artykuł

Tutaj podobnie jak w punkcie numer 2 z tą różnicą, że pojedynczy fragment to praktycznie para id_nazwa

4) http://x.example.com/katalog/1_kategoria/3...goria/1_artykuł

Tutaj jak w punkcie numer 3 ale dodatkowo potrzebne wyłapanie hostname.


Będę bardzo wdzięczny za wszelkie podpowiedzi, sugestie, przykłady etc. Myślałem nad wykorzystaniem łańcucha by dodać informacje o artykule bądź też najpierw wyłapanie hostname, potem statyczny, potem ścieżka kategorii, potem właściwa kategoria, potem artykuł, a jeszcze za tym mogą być standardowe pary parametrów. Przy czym nie potrafię poradzić sobie z zaimplementowaniem obsługi dowolnego poziomu zagnieżdżenia.

Czy ktoś z Was się spotkał się z takim zagadnieniem i mógł mnie naprowadzić?

Pozdrawiam serdecznie,
Łukasz Piotr Łuczak

--- add:

Znalazłem teraz coś takiego:

http://www.zfsnippets.com/snippets/view/id/29

Spróbuję nad podstawie tego znaleźć jakieś rozwiązanie. Mimo wszystko nadal będę wdzięczny za sugestie.

--- add2:

Magia jakaś czy co? Znalazłem inne rozwiązanie bazujące na utworzeniu Zend_Controller_Plugin_Abstract i w zdarzeniu routeStartup zedytować ciąg zapytania poprzez getRequestUri oraz setRequestUri. Może to rozwiązanie nie zapewni mi łatwego generowania adresu za pomocą helpera ale mimo wszystko pozwoli wywoływać odpowiednie akcje a to już sukces.
rudi23
Skoro interesuje Cię tylko ostatnia kategoria może warto by traktować cały ciąg n kategori/podkategorii jako jeden parametr i dodatkowo go parsować przez explode po slashu

/katalog/kategoria/podkategoria/podpodkategoria/podpodpodkategoria/..../poppodpodpodpodkategoria/artykuł

/katalog/:kategoria/:artykul

gdzie :kategoria to "kategoria/podkategoria/podpodkategoria/podpodpodkategoria/..../poppodpodpodpodkategoria"

oczywiście zwykłym routem tego nie zrobisz potrzebny regex, bo slash jest domyślnie separatorem parametrów

Musisz wziąć po uwagę, że przy odczycie parametrów możesz odczytywać tylko te które Cię interesują, ale tworząc url przy użyciu viewhelper'a będziesz musiał podać wszystkie parametry inaczej router rzuci wyjątkiem.
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.