Jak na cool url s textem místo id?

- spidy
- Člen | 55
Tak jsem se vrhnul do trochu většího routování a nějak se mi
nedaří…
Mám akci book v presenteru homepage, která má jako parametr id knihy. Rád
bych měl v adrese místo ‚homepage/book/id‘ něco jako
‚jmeno-autora/jmeno-knihy‘. Zkoušel jsem:
$router[] = new Route('<writer>/<book>', array(
'presenter' => 'homepage',
'action' => 'book',
'id' => array(
Route::FILTER_IN => function($url) {
//tady bude sql dotaz
return 10;
},
Route::FILTER_OUT => function($id) {
//tady taky
return 'test';
}
)
));
ale žádný odkaz mi do routy nespadne… Nevíte někdo jak na to?

- Matúš Matula
- Člen | 257
V tom pripade vymen <book> za <id>,
aby to v route vobec bolo :), teda
<?php
$router[] = new Route('<writer>/<id>', array(
'presenter' => 'homepage',
'action' => 'book',
'id' => array(
Route::FILTER_IN => function($url) {
//tady bude sql dotaz
return 10;
},
Route::FILTER_OUT => function($id) {
//tady taky
return 'test';
}
)
));
?>
Ale podobne to musis spravit aj pre <writer>, ale uz asi
rozumies..

- spidy
- Člen | 55
Mohl bys prosím trochu upřesnit to ‚aby to v route vobec bolo‘? Nějak se mi to pořád nedaří rozchodit… Nemělo by tam náhodou být jenom ‚<id>‘, když metoda renderBook přijímá pouze parametr id? Jde mi o to, že v url bude adresa ‚spisovatel/kniha‘, ale díky funkci FILTER_IN přijme jako parametr id knihy… Co je vůbec obsaženo v parametru $url? Zkusil bych to dumpnout, ale žádná stránka mi do routy nespadne, takže je to k ničemu…

- Filip Procházka
- Moderator | 4668
Tohle vlákno by to mohlo pomoct: https://forum.nette.org/…dnot-pri-mvc