Routa bez <presenter> pro jeden jediny presenter

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

Zdar,

tapu nad tim jak udelat routu jen pro jeden jediny presenter pro presenter Front:Default bych chtel mit URL ve formatu www.domain.com\action

ostatni presentery www.domain.com\presenter\action

zkousel jsem to takto,

$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<action>[/<id>]', 'Default:default'); //Teto route vyhovuje i URL www.domain.com\presenter\action
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Payment:default');

Verim ze to nejak lze, snad nekdo poradi

Diky moc Mira

jiri.pudil
Nette Blogger | 1029
+
0
-

Nemám teď možnost to vyzkoušet, ale takhle z hlavy mě napadá použít jen jednu routu s výchozí hodnotou Default a nastavit presenter jako volitelný:

$frontRouter[] = new Route('[<presenter>/]<action>[/<id>]', 'Default:default');
Kurtas
Člen | 109
+
0
-

To jsem zkousel ale nefunguje to, actions z Default preresenteru jsou prekladany jako presenter aneb
pro www.domain.com/about
Cannot load presenter ‚Front:About‘, class ‚FrontModule\AboutPresenter‘

Michal Vyšinský
Člen | 608
+
0
-

Já používám toto (resp. stejnou strukturu) pro administrační presenter:

//routa pro administraci čili www.example.com/admin/cokoliv
$frontRouter[] = new Route('/admin/<action>[/<id>]', 'Admin:default');
//routa pro ostatní presentery
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Payment:default');

Editoval CherryBoss (20. 11. 2012 17:10)

Kurtas
Člen | 109
+
0
-

Ano, tohle funguje jenze problem je, ze ja to potrebuji pro frontend modul (homepage) to by se mi pak generovali url ve tvaru www.example.com/NECO/**action** coz je nezadouci.

Edit: CherryBoss pro tvoje chovani by bohate stacila jedna routa ne?
$frontRouter[] = new Route(‚<presenter>/<action>[/<id>]‘, ‚Payment:default‘);

Editoval Kurtas (20. 11. 2012 21:49)

Aearsis
Člen | 57
+
0
-

Routa musi nejakym zpusobrm rozlisit, jestli je „about“ presenter nebo action. Docilis toho bud vyjmenovanim akci onoho presenteru, nebo jmen ostatnich presenteru jako parametr route:

$router[] = new Route('/<action edit|show|delete>[/<id>]', 'Whatever:default');
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

(z hlavy)

Samozřejmě pak nesmíš mít presentery „show“, „edit“ ani „delete“.

Kurtas
Člen | 109
+
0
-

Aearsis: Mooooc diky, to je to co jsem hledal!