Routování – HomepagePresenter bez názvu preseteru, AdminPresenter s názvem

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

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
+
0
-

Ahoj, mohl by ti pomoct tento post.

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)

simPod
Člen | 383
+
0
-

aha, jestli to dobre chapu, ve slozce prezenter vytvorim slozku AdminModule?
to vypada jednoduse, dekuji

nanuqcz
Člen | 822
+
0
-

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
+
0
-

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)

22
Člen | 1478
+
0
-

záleží, jak máš namespace v presenterech, doporučuju ti se podívat do vzorové aplikace v distribuci examples/Modules-Usage

simPod
Člen | 383
+
0
-

jeee, toho jsem si nevsiml, dobry, ted uz si teda poradim. Diky vsem!

bojovyletoun
Člen | 667
+
0
-

neměla by být adminrouta definovaná dřív?

simPod
Člen | 383
+
0
-

no ja nevim, ja nejsem nette guru ;) Je k tomu nejaky zasadni duvod?

JuniorJR
Člen | 181
+
0
-

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)