Minus v masce routy způsobuje problémy

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
umrlec
Člen | 56
+
0
-

Zdravím, mám takovouto routu,

$router[] = new Route('udalosti[/<id>-<title>][/<section>]', array(
      'presenter' => 'Frontend:Event',
      'action' => 'show',
      'id' => null,
      'title' => array(
          Route::VALUE => null,
          Route::FILTER_OUT => function($title) { return \Nette\String::webalize($title); },
      ),
  ));

po které chci aby generovala url ve tvaru např. ../udalosti/3-nejaka-udalost. Problém činí minus mezi <id> a <title>, ten mi to rozdělí a za parametr id se dá „3-nejaka“ a za parametr title se dosadí „udalost“ a na odkazované stránce mi to pak samozřejmě háže výjimky. Když dám místo jednoho minus dvě, nebo ho třeba nahradím lomítkem či čímkoliv použitelným, tak to jde …

Nevíte prosím, jak tomuto chování zabránit?

voda
Člen | 561
+
0
-

Musíš omezit platné znaky v <id> jen na čísla. Nevím teď jak se to přesně dělá, pohledej tady na fóru. Takhle by ti to vždycky matchnulo vše až před poslední mínus.

Edit: Tak by mohlo fungovat <id [0–9]+>

Editoval voda (31. 3. 2011 14:29)

umrlec
Člen | 56
+
0
-

Ano, to bylo to co jsem potřeboval. Děkuji :)

umrlec
Člen | 56
+
0
-

Hm a je v pořádku, když si místo title můžu v URL napsat cokoliv a pořád se načte stejná stránka?

Jan Jakeš
Člen | 177
+
0
-

To moc v pořádku není. V takovém případě bych normálně vyhodil chybu, že stránka neexistuje anebo aspoň redirect na správnou formu url s MOVED PERMANENTLY.

umrlec
Člen | 56
+
0
-

Dal jsem tam tedy ten redirect, alespoň to bude odolné proti překlepům.