Mam taki route:

  1. Route::set('default', '((<lang>(/))(<controller>)(/<action>(/<id>)))', array('lang' => 'en|pl'))
  2. ->defaults(array(
  3. 'controller' => 'index',
  4. 'action' => 'index',
  5. ));


I prawie wszystko działa, oprócz takiego uri:
http://localhost/messages/read/1

,a mianowicie parametr <id> nie jest przekazywany do akcji jako argument.

Za bardzo nie rozumiem dlaczego taki route już działa:

  1. Route::set('default', '((<controller>)(/<action>(/<id>)))', array('lang' => 'en|pl'))
  2. ->defaults(array(
  3. 'controller' => 'index',
  4. 'action' => 'index',
  5. ));


Po mojemu, skoro <lang> jest w nawiasie, i jest wyrażeniem regularnym wskazane jakie mogą być jego wartości to jeśli na początku uri nie ma pl, en, pl/ lub en/ , to reszta powinna zachowywać się jak w przypadku drugiego listingu. Ale jak widać nie rozumiem zasad routingu, może ktoś mi to wyjaśnić i jeśli to możliwe wskazać route, który będzie działał jak domyślny przekazując argumenty ale działający z <lang> na początku? worriedsmiley.gif

Wiem, że wspomniane <id> mogę pobrać przez Request lub utworzyć inny route.