použití stejné šablony i presenteru pro všechny role ⇒ správná routa
- spiider
- Člen | 162
Ahoj, chci na webu udělat administraci tak, že po zadání url example.com/admin se přihlásím a u všech editovatelných prvků se mi zobrazí možnost editace nebo mazání apod. zkrátka podle práv. Takže budu mít společné templaty i presentery pro všechny role jenom jejich zobrazení rozliším aclkem. Doufam že to takhle není nějaká prasárna :) a teď potřebuju routu kde když zadám example.com/admin a po loginu kliknu např. na diskuzi tak adresa bude example.com/admin/diskuze kde budu moci editovat a mazat zprávy. Ale když se nepřihlásím a kliknu jako guest na diskuzi tak adresa pak bude example.com/diskuze tak se mi zobrazi stejná šablona a vykoná stejný presenter jako u admina ale s jinou url. Snad jsem to dobře popsal. Poradíte někdo? Díky
- llook
- Člen | 407
Myslím, že by to mohlo být nějak takto:
$container->router[] = new Route('admin', 'Sign:in');
if ($container->user->isInRole('admin')) {
$container->router[] = new Route('admin/<presenter>/<action>[/<id>]', 'Homepage:default');
}
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
- spiider
- Člen | 162
Tak jak sem na to koukal a zkoušel to tak si mě asi nepochopil. Toto mě pokaždé směruje na admina a přihlášení a já chci když zadám example.com/admin tak abych se dostal na přihlašování a když zadám example.com tak abych viděl homepage. Mám to takto:
$router[] = new Route('admin/<presenter>/<action>/[id]/[strana-<vp-page>]', array(
'presenter' => 'Auth',
'action' => 'login',
'id' => null,
));
$router[] = new Route('<presenter>/<action>/[id]/[strana-<vp-page>]', array(
'presenter' => 'Homepage',
'action' => 'default',
'id' => null,
));
pro admina to funguje v pořádku ale když neuvedu do adresy /admin tak mě to tam vždy přesměruje tak jako tak. Díky
- Aurielle
- Člen | 1281
Všechno ti padá do první routy proto, že jejich definice se skoro vůbec neliší. Všechny požadavky prostě vyhovují oběma routám, a první se vezme jen z toho důvodu, že je dřív. Pokud to chceš odlišit, doporučoval bych vyčlenit třeba administrační část do samostatného modulu (což ale asi není tvým cílem) nebo si první routu napsat specifičtěji.
Editoval gmvasek (10. 2. 2012 16:44)