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