Witam,
Tworzę wersje językowe do swojego serwisu i trochę w pewnym miejscu utknąłem.. a dokładniej na trasach routingu.
Otóż chcę by w przypadku gdy nie jest ustawiony parametr lang (wersja polska) ścieżka wyglądała w sposób następujący:
kontroler/akcja/nazwa_parametru/wartosc_parametru/etc z innymi parametrami (jeśli są ustawione w $_GET)
Natomiast jeśli jest parametr lang (inne wersje językowe):
en/kontroler/akcja/nazwa/wartosc/etc.
Mam takie 2 reguły w Bootstrapper/_initRoutes() :
$router->addRoute(
'controlleraction', new Zend_Controller_Router_Route('/:controller/:action/*', array('lang' => 'pl'))
);
$router->addRoute(
'langcontrolleraction', new Zend_Controller_Router_Route('/:lang/:controller/:action/*', array('lang' => 'pl'))
);
Reguły te (jak mniemam) wzajemnie się wykluczają..
W przypadku pierwszej skutek daje tylko nie podanie parametru lang, w przeciwnym wypadku lang jest traktowany jako controller (co jest logiczne)..
Natomiast w drugim przypadku jest dokładnie na odwrót..
Moje pytanie jest następujące: czy zamierzony przeze mnie efekt jest możliwy do osiągnięcia bez deklarowania osobno tras routingu do każdej akcji (wykorzystuję różne paramtry w $_GET - dlatego użyłem "/*")? Jeśli tak, to proszę o jakąś wskazówkę, która mnie naprowadzi bądź fragment kodu trasy routingu, który mógłby rozwiązać mój problem. W ostateczności użyję drugiej reguły i nawet w przypadku wersji polskiej będę przekazywać "pl" w adresie, jeśli jednak da się to zrobić w bardziej elegancki sposób to zdecydowanie bardziej by mi odpowiadał.