Zapsání routy tak aby se v url vypustil nazev presenteru i action
- Neklan
- Člen | 21
Ahoj, potřeboval bych poradit. Již si nějaký čas s nette „hraju“ ale routování je pro mě zatím španělská vesnice. Potřeboval bych poradit jak a kam přesně (myslím tím pořadí rout) zapsat takovou routu, abych místo adresy domena.cz/magazine/article/url-clanku mel adresu pouze domena.cz/url-clanku
Diky moc za pomoc
Tom
- Neklan
- Člen | 21
no mam to takhle, ale nefunguje to, lepe receno url toho clanku to vygeneruje spravne, ale ostatni stranky nejdou
<?php
$router[] = new Route('<pk>', array(
'presenter' => 'Magazine',
'action' => 'show'
));
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>[/<pk>][/<url>]', 'Homepage:default');
?>
- assassik
- Člen | 43
Čim více obecná routa, tim musí být blíže ke konci.
„<pk>“ v podstatě vyhový všechno proto se požadavek na nějakou jinou stránku nedostane tam kam má.
<?php
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>[/<pk>][/<url>]', 'Homepage:default');
$router[] = new Route('<pk>', array(
'presenter' => 'Magazine',
'action' => 'show'
));
?>
PS: používej RoutingPanel v debugBaru ;)
Editoval assassik (4. 5. 2011 15:06)
- Aurielle
- Člen | 1281
Lehký nástřel – pokud se hodnota najde třeba v databázi, routa ji
propustí, pokud ne, přejde se na další routu. Pomocí FILTER_OUT můžeš
upravit chování při generování odkazů, například parametr
id
nahrazovat seo-friendly hodnotou z databáze (a ve FILTER_IN
zase převádět zpět na ID).
$router[] = new Route('<pk>', array(
'presenter' => '...',
'action' => '...',
'pk' => array(
Route::FILTER_IN => function($value) {
if(\MyApp\PkModel::findBySlug($value))
return $value;
return NULL;
},
),
));