Routa na Modul přepsání z . na / v URL

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

Ahoj,

používám moduly pro které mám speciální routy a potřeboval bych záměnu tečky za /

App/SetupModule

/setup.load/role
/setup/load/role
$router = new RouteList;
$router[] = new Route('<presenter>/<action>[/<id>]', 'Home:default');

$setup = new RouteList('Setup');
$setup[] = new Route('setup/<presenter>/<action>[/<id>]', 'Setup:Home:default');
$router[] = $setup;

return $router;

Lze tuto drobnost nějako upravit ? Pomocí Modulů bych mohl řešit TREE menu kdy setup je „suk“ a load větve

Díky moc

David Matějka
Moderator | 6445
+
0
-

do toho hlavniho $router musis nejdriv pridat tu $setup a az pak tu obecnou routu

Joacim
Člen | 229
+
0
-

David Matějka napsal(a):

do toho hlavniho $router musis nejdriv pridat tu $setup a az pak tu obecnou routu

Problém je že když prohodím routery tak mi to zahlasí že to nemuže najít Home

Nette\Application\BadRequestException #404

Cannot load presenter 'Manufacturing:Home', class 'App\ManufacturingModule\Presenters\HomePresenter' was not found.
$mf = new RouteList('Manufacturing');
$mf[] = new Route('[<locale=es es|en>/]manufacturing/<presenter>/<action>[/<id>]', 'Manufacturing:Test:default');

$router[] = new Route('[<locale=es es|en>/]<presenter>/<action>/[<id>]', "Home:default");

$mf[] = $router;
return $mf;

Zkoušel jsem i změnu na :Home:default a :Manufacturing:Test:default, ale dostanu hlášku

Nette\Application\BadRequestException #404

Cannot load presenter 'Manufacturing::Home', class 'App\ManufacturingModule\' was not found.

Editoval Joacim (10. 1. 2017 12:28)

David Matějka
Moderator | 6445
+
+1
-

ty ten hlavni router nemas davat pod ten modulovy router, ma to vypadat nejak takhle:

$router = new RouteList();

$router[] = $fooModuleRouter = new RouteList('Foo');
$fooModuleRouter[] = new Route('[<locale=es es|en>/]foo/<presenter>/<action>[/<id>]', 'Test:default'); //zde uz v tom nazvu presenteru znovu Foo neuvadej

$router[] = new Route('[<locale=es es|en>/]<presenter>/<action>/[<id>]', "Home:default");

return $router;
Joacim
Člen | 229
+
0
-

David Matějka napsal(a):

ty ten hlavni router nemas davat pod ten modulovy router, ma to vypadat nejak takhle:

$router = new RouteList();

$router[] = $fooModuleRouter = new RouteList('Foo');
$fooModuleRouter[] = new Route('[<locale=es es|en>/]foo/<presenter>/<action>[/<id>]', 'Test:default'); //zde uz v tom nazvu presenteru znovu Foo neuvadej

$router[] = new Route('[<locale=es es|en>/]<presenter>/<action>/[<id>]', "Home:default");

return $router;

Díky moc Davide, funguje skvěle.

Měl bych ještě jeden dotaz, dá se nějako vynutit abych měl i název Test:default v url

z /manufacturing/ na /manufacturing/test/

David Matějka
Moderator | 6445
+
+1
-

staci neuvadet ten defaultni presenter Test:default

Joacim
Člen | 229
+
0
-

David Matějka napsal(a):

staci neuvadet ten defaultni presenter Test:default

Jo funguje jak má.

Zajímalo by mě zda se dá stejně jako je tomu v @layout.latte {include content}, použít i v již includované šabloně když používám modul
@layout → included content (Modul:default) a ten by obsahoval include modul_content

David Matějka
Moderator | 6445
+
0
-

@Joacim moc nechapu dotaz, muzes to upresnit?

Joacim
Člen | 229
+
0
-

David Matějka napsal(a):

@Joacim moc nechapu dotaz, muzes to upresnit?

Aha promin za zmatek:
No v @layout.latte se používá {include content} a dané stránky co se includují dovnitř mají identifikátor {block content}{/block} a já bych si chtěl načíst Modul, např v modulu mám presenter Test a ten má test.latte. Načte se mi layout a includuje se to nej Test s test.default (má v sobě podmenu jen pro Test) a tento test.default by měl v sobě {include test_part} a další šablony v Modulu Test by používali {block test_part}.

Moduly používám proto abych měl rozšířenou délku pro stromové menu v URL
nomálně je web/presenter/latte a díky tomu tohu mít web/modul/presenter/latte