použití stejné šablony i presenteru pro všechny role ⇒ správná routa

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

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

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

Ok vyzkouším díky, jinak mě napadnulo jestli by nešlo ještě admin uvést jako nepovinou položku do routy…?

spiider
Člen | 162
+
0
-

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

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)

spiider
Člen | 162
+
0
-

No do vlastního modulu to nechci no, pak bych nemohl mít presentery a šablony společné a nemohl by mi někdo poradit jak tu routu napsat? Kdybych to věděl tak bych sem nepsal :) díky

spiider
Člen | 162
+
0
-

Tak sem něco zkoušel ale nic mi nefungovalo a nějak nemohu ani nic vygooglit rozumného. Vždy mi jde buď jenom admin nebo nejde. Neporadíte pls? Routy mám teď opět jak jsem psal nahoře. Díky moc