Routa na Modul přepsání z . na / v URL
- Joacim
- Člen | 229
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
do toho hlavniho $router
musis nejdriv pridat tu
$setup
a az pak tu obecnou routu
- Joacim
- Člen | 229
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
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
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/
- Joacim
- Člen | 229
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
- Joacim
- Člen | 229
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