Parametr s pomlčkou v URL

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

Ahoj, lámu si s tím hlavu už dlouhou dobu a nedaří se mi to vyřešit. Napřed kód routy:

$container->router[] = new Route('<presenter>/<team [^-]+>-<class [a-c]{1}>', array(
            'presenter' => 'Tym',
            'action' => 'default',
            'team' => array(
                Route::FILTER_IN => function ($team) use ($container) {
                    if (is_numeric($team)) {
                        return $team;
                    } else {
                        return $container->createTeamtypes()->where('url', $team)->fetch()->id;
                    }
                },
                Route::FILTER_OUT => function ($team) use ($container) {
                    if (!is_numeric($team)) {
                        return $team;
                    } else {
                        return $container->createTeamtypes()->find($team)->select('url')->fetch()->url;
                    }
                })
        ));

URL by měla vypadat takto: /tym/nazev-trida/ … což samo o sobě funguje, problém mi nastává, když chci porovnat např. /tym/delsi-nazev-trida/

Jde to vůbec vyřešit? Díky za každou radu

Editoval Kyle (17. 9. 2012 20:59)

vvoody
Člen | 910
+
0
-

Ja by som to cele posunul do presenteru ako jeden parameter a riesil to tam

$container->router[] = new Route('<presenter>/<teamandclass>', array(...
Jan Tvrdík
Nette guru | 2595
+
0
-

Tohle ti nefunguje? (Zrušil jsem ten regulární výraz z <team>.)

new Route('<presenter>/<team>-<class [a-c]{1}>', array(...))
jansfabik
Člen | 193
+
0
-

Není náhodou pomlčka uvnitř [...] speciální znak? Správně je to myslím

'<presenter>/<team [^\\-]+>-<class [a-c]{1}>'
Kyle
Člen | 3
+
0
-

Jan Tvrdík: velmi děkuji, funguje .. vsadil bych boty, že jsem to zkoušel, ale asi v tý době jsem měl ještě chybu ve filtru

jansfabik: toto funguje tak, že vypíše klasicky adresu ?team=nazev&class=a , čili ne s pěknou URL