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?