Route::setStyleProperty nestaticky (pro každou routu zvlášť)
- Honza Marek
- Člen | 1664
Často potřebuju nahrazovat v routách „url“ za idčka. Pokud budu předpokládat, že id použije i více presenterů než jeden, musím si nyní psát vlastní routy. Ještě samozřejmě můžu použít $articleId, $categoryId, … atd. Ale proč? Elegantním řešením by bylo, kdyby styleProperty nebylo takhle nesmyslně statické, ale instanční pro každou routu.
- Vyki
- Člen | 388
Něco ve stylu
<?php
$router[] = new Route('<id #perm>', array(
'presenter' => 'Page:Default',
'action' => 'default',
));
$router[] = new Route('<id #articleid>', array(
'presenter' => 'Articles:Default',
'action' => 'detail',
));
?>
mi funguje a nevadí, že u obou jsou parametry s názvem id.
Edit: Ještě dodám, že problém však nastává když se jednomu z nich nastaví defaultní hodnota pro id.
Editoval Vyki (28. 11. 2010 23:07)
- Filip Procházka
- Moderator | 4668
a co takhle? :)
$router[] = new Route('<id>', array(
'presenter' => 'Articles:Default',
'action' => 'detail',
'id' => array(
Route::VALUE => NULL,
'fixity' => Route::OPTIONAL, // nebo Route::CONSTANT
// Route::PATTERN => '[^/]+',
// Route::FILTER_TABLE => array(),
// Route::FILTER_IN => array(...),
// Route::FILTER_OUT => array(...),
// ...
)
));
Editoval HosipLan (29. 11. 2010 7:54)
- David Grudl
- Nette Core | 8218
Route::setStyleProperty se v podstatě deprecated, použij HosipLanův zápis.
- David Grudl
- Nette Core | 8218
fixity je interní záležitost, která se nesmí nastavovat, jinak to může produkovat nečekané výsledky.
- Ondřej Mirtes
- Člen | 1536
Já si právě říkám, že to bude nějaký implementační detail. Takže v tom poli budu nastavovat pouze FILTER_IN a FILTER_OUT a o zbytek se starat nebudu.