Jak na cool url s textem místo id?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
spidy
Člen | 55
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

Tohle vlákno by to mohlo pomoct: https://forum.nette.org/…dnot-pri-mvc

spidy
Člen | 55
+
0
-

Super, to je přesně to co jsem potřeboval :). Dík, konečně mi funguje všechno tak jak má 8)