Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Problem aktywnej zakładki w nawigacji
Forum PHP.pl > Forum > PHP > Frameworki
MickDev
Witam,

Mam następujący problem i nie wiem jak się do niego zabrać. Otóż, mam poziomą nawigację zrealizowaną na tabs'ach, pozycje zaczytywane są z bazy. Po otworzeniu linka wybrana zakładka powinna mieć ustawioną odpowiednią klasę (active).


Nawigację chcę zamknąć w komponencie. Jednak nie wiem jak:

1. Wykryć aktualną ścieżkę ?

  1. $request->getPathInfo(); // ?


2. Aktualną ścieżkę przekazałbym do komponentu w którym porównywałbym dostępne pozycje z aktualną ścieżką. Jeśli znalazłaby się odpowiednia pozycja ustawiam dla niej klasę active. Dobrze myślę ? Proszę o pomoc.
Quadina
Pobierz sobie swój parametr normalnie metodą klasy sfRequest:
  1. $sf_request->getParameter('nazwa'); // dla index.php?nazwa=xxx

i przekaż ją do komponentu. Swoją drogą komponent chyba też ma dostęp do $sf_request, więc możesz to wykonać już z tamtego poziomu.
MickDev
Quadina, nie o to chodziło, ale dzięki za odpowiedź.

Może wyjaśnię bardziej szczegółowo. W bazie mam wewnętrzne linki typu:
  1. news/show?id=2
  2. news/show?id=4
  3. page/show?id=3

Te z kolei używam w generowaniu nawigacji poprzez funkcję link_to(), która zamienia taki link np. na page/show/id/2.

Funkcja getPathInfo() zwraca taką ścieżkę jak ta wygenerowana przez link_to(). W związku z czym porównywanie tych dwóch rodzajów ścieżek nie ma sensu.

Podczas przeglądania dokumentacji wpadłem na takie coś:

  1. $routing = sfContext::getInstance()->getRouting();
  2. $Myuri = $routing->getCurrentInternalUri();

Dzięki temu dostaję ścieżkę w tej samej formie co te w bazie. Wszystko działa jak należy dla zwykłego routingu. Problem pojawia się jak routing jest typu sfPropelRoute, bo kiedy "page/1" działa poprawnie po wpisaniu w pole adresu to ta ścieżka użyta w link_to() niekoniecznie. System routingu przekształca ten link na "page/1/action" i dostaję komunikat o braku akcji action.
Gribo
możesz pobrać zamiast adresu nazwę rotingu i na tej podstawie generować menu.
Quadina
Już rozumiem ;-)
sfWebController ma taką funkcję convertUrlStringToParameters() o którą chyba Ci chodzi :-)
  1. sfContext::getInstance()->getController()->convertUrlStringToParameters('link z /'); // zwroci link z ? i =


Dla linków z sfPropelRoute dostaniesz odpowiednio: @route?....
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.