[2008-11-13] Routování a „foo“ parametry

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8227
+
0
-

Novinkou, která by měla usnadnit definici rout, jsou tzv. „foo“ parametry. Narozdíl od klasických parametrů nemají název (místo něj se použije otazník), nepředávají se presenteru a slouží k tomu, aby bylo možné do masky přidat regulární výraz.

Příklad: jednosměrná routa akceptující index.html, index.htm a index.php.

$router[] = new Route('index<? \.html?|\.php>', array(
	'presenter' => 'Homepage',
	'action' => 'default',
), Route::ONE_WAY);

Pokud by uvedená routa byla obousměrná, generovala by cestu index, kterou však sama neumí akceptovat. Výraz by se proto musel rozšířit i o prázdnou hodnotu na 'index<? \.html?|\.php|>'

Nebo lze explicitně definovat řetězec, který bude při generování cesty použit (obdoba výchozí hodnoty u skutečných parametrů). Řetězec se vloží ihned za otazník:

$router[] = new Route('feed<?.xml \.xml|>', array(
	'presenter' => 'Feed',
	'action' => 'rss',
));

Tato routa akceptuje cesty feed.xml a feed, přičemž generuje feed.xml.