Routování – HomepagePresenter bez názvu preseteru, AdminPresenter s názvem
- simPod
- Člen | 383
routuju adresy pomoci:
$router = $container->router;
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<action>[/<id>]', 'Homepage:default');
Moje aktualni struktura je HomepagePresenter (frontpage), ktery vola ruzne sablony, takze adresa je mojedomena.cz/nazevSablony
Chci ale udelat AdminPresenter, ktery bude volat nejake sabolny, ke kterym bude zaheslovany pristup a jejich url byla mojedomena.cz/admin/nazevSablony
Jak tohoto docilit? dekuji
- nanuqcz
- Člen | 822
Ahoj, mohl by ti pomoct tento post.
V dokumentaci na to byl myslím hezký příklad, ale asi ho někdo smazal :-(
EDIT: Takže výsledné routování by mohlo vypadat nějak takhle:
$router = $container->router;
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<action>[/<id>]', 'Homepage:default');
// Nové routy pro administraci
$router[] = $adminRouter = new RouteList('admin'); // parametr je název defaultního modulu
$adminRouter[] = new Route('admin/<action>[/<id>]', 'Homepage:default');
To, aby ses do adminu dostal jen po zadání hesla, by pak měl mít na
starost presenter (třeba AdminModule\BasePresenter
), nebo nejlépe
nějaký Authenticator
Editoval xxxObiWan (31. 10. 2011 6:47)
- nanuqcz
- Člen | 822
Jj, viz dokumentace, nebo fórum.
P.S. Ještě jsem v mojem předešlém příspěvku našel chybku, chyběla
mi v routách složka admin/
– opraveno
- simPod
- Člen | 383
tak jsem si s tim hral a pak jsem si vzpomnel na rozdeleni do slozek
FrontModule a AdminModule, coz jsem tedy tak udelal. Front mi funguje, ale Admin
ne
v bootsrapu mam:
$router = $container->router;
$router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY);
$router[] = new Route('<action>[/<id>]', 'Front:Homepage:default');
// Nové routy pro administraci
$router[] = $adminRouter = new RouteList('admin');
$adminRouter[] = new Route('admin/<action>[/<id>]', 'Admin:default');
kdyz zadam myweb.cz/admin tak mi ladenka vyhodi 404, Page not found. Missing template ‚…\wwwfolder\app\FrontModule\templates\Homepage\admin.latte‘.
ja bych ale chtel, aby pri vlozeni /admin defaultne smerovalo na AdminPresenter, na template default napr.
Dle ladenky soudim, ze mam blbe routovani pro slozku admin, dotaz zni, jak ho nastavit spravne? Dekuji
Pak jsem zkoumal radek
$router[] = $adminRouter = new RouteList('admin'); // parametr je název defaultního modulu
tzn mam 2 moduly FrontModule a AdminModule? a Defaultni pro admin by tedy
mel byt AdminModule, tzn. tam napisu admin
? Proc to tedy radek
$adminRouter[] = new Route('admin/<action>[/<id>]', 'Admin:default');
nezohlednuje a vola fronmodule?
diky
Editoval simPod (2. 11. 2011 0:26)
- JuniorJR
- Člen | 181
bojovyletoun napsal(a):
neměla by být adminrouta definovaná dřív?
Opravte mě, pokud se mýlím, ale jestliže je konkrétnější, tak by pak měl být před tím obecnějším. Teoreticky to nemusí vadit, ale pokud by si měl ve FrontModulu AdminPresenter, tak by to vzalo ten a ne AdminModule.
Editoval JuniorJR (24. 11. 2011 10:04)