[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
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
.