Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Doctrine] Paginator + Filtr + Sortowanie - tworzenie url, Problem z generowaniem poprawnych linków
olekbiker
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.09.2009

Ostrzeżenie: (0%)
-----


Witam

Od jakiegoś czasu uczę się tandemu symfony-doctrine. Natrafiłem jednak na pewien problem, którego nie potrafię rozwiązać w prosty sposób. Możliwe, że istnieje już w symfony odpowiedni mechanizm, tylko ja nie wiem jak go odnaleźć, dlatego proszę o pomoc.

Opis problemu:
Przy wyświetlaniu wyników w tabeli postanowiłem zastosować paginację, sortowanie i filtrację. Wszystkie parametry chcę umieszczać w url (wzoruję się na Allegro).

Do powyższego zadania nie jest możliwe zastosowanie standardowego paginatora DoctrinePager, ponieważ jego koncepcja generowania linków url gubi wszystkie parametry. Poza tym generowanie linków powinno odbyć się w widoku, a nie akcji. Po długich kombinacjach doszedłem do takiego rozwiązania:

  1. $current_route_name = sfContext::getInstance()->getRouting()->getCurrentRouteName();
  2. $param = $sf_request->getParameterHolder()->getAll();
  3. $param = $param->getRawValue();
  4.  
  5. echo '<a href = "' . sfContext::getInstance()->getRouting()->generate($current_route_name,
  6. array_merge($param, array('page' => $pager['previous_page']))) . '" >&lt; </a> ';


Url-e generowanie są automatycznie bez obawy o zgubienie parametrów. Problem jednak pojawia się w momencie podania nazwy parametru zawierającego dużą literę (np. 'Page' zamiast 'page'). Skutkuje to nie tylko dopisaniem kolejnych parametrów do linku (...Page/3/page/2), ale również uznaniem, że parametr pożądany ('page') nie istnieje. W jaki sposób to naprawić?

Czy istnieje metoda, zmuszająca do obsługi jedynie parametrów pisanych małą literą, lub konwertowanie nazw parametrów.
Może ktoś z Was zna ciekawszy sposób na rozwiązanie tego problemu?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:39