Admin module v aplikaci bez modulů

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

Ahoj, mám aplikaci která nepoužívala moduly, ale bylo potřeba přidat administrační rozhraní (nazývané BackOffice). Dlouho jsem pátral po tom, jak to naroutovat, abych nemusel původní bezmodulovou aplikaci přepisovat na FrontModule a nakonec mi funguje toto:

<?php
$router[] = new Route('index.php', array(
    'presenter' => 'Default',
    'action' => 'default',
), Route::ONE_WAY);

// Admins
$router[] = new Route('backoffice/<presenter>/<action>/<id>', array(
        'module' => 'Backoffice',
        'presenter' => 'Default',
        'action' => 'default',
        'id' => NULL,
), Route::ONE_WAY);

$router[] = new Route('<presenter>/<action>/<id>', array(
	'presenter' => 'Default',
    	'action' => 'krok1',
    	'id' => NULL,
));
?>

Akceptuje to (jednosměrně) adresu: http://app/backoffice/default/default/ , ale přeíše mi to na: http://app/backoffice.default/default/
Pokud zadám jen adresu: app, tak mi to správně zobrazí http://app/default/krok1/ uživatelského rozhraní. (Pokud zruším jednosměrku u BackOffice, tak mi to z app přepíše na http://app/backoffice/default/krok1/)

Otázka zní:

  1. Je to správně, nebo to funguje jen náhodou? (Ve dvou vláknech tu někdo zmiňoval, že buď moduly, nebo bez nich. Že s hybridy nefunguje routování.)
  2. Dá se to upravit tak, aby se mi generovalo http://app/backoffice.default/default/ s lomítkem místo tečky?

Díky.

Honza Kuchař
Člen | 1662
+
0
-

Sice nevím přesně co potřebuješ, ale na zracovávání rout, má vliv i pořadí. Takže můžeš laborovat i s ním.

Editoval honzakuchar (15. 4. 2010 12:28)

srigi
Nette Blogger | 558
+
0
-

Alikacku mozes predsa napisat tak, ze je „naplocho“, iba backoffice bude modul.

Šaman
Člen | 2659
+
0
-

Co je problém popisuje Toka tady a GmVasek tady.

Řešení tam ale není, resp. oba to nakonec vyřešili přepsáním na FrontModule a AdminModule. Mě to funguje i bez toho, ale nevím, jestli je to čisté.

Šaman
Člen | 2659
+
0
-

srigi napsal(a):

Alikacku mozes predsa napisat tak, ze je „naplocho“, iba backoffice bude modul.

Jj, o to se snažím. Jak to pak ale naroutovat? U front části (která není v modulu) nemohu vyplnit default module. A pokud to routuju Admin část bez modifikátoru ONE_WAY, tak mi všechno routuje na Admin modul. I když v adrese není ve tvaru admin/<presenter>/<action>/<id>, ale jen <presenter>/<action>/<id>.

toka
Člen | 253
+
0
-

Šaman napsal(a):

Co je problém popisuje Toka tady a GmVasek tady.

Řešení tam ale není, resp. oba to nakonec vyřešili přepsáním na FrontModule a AdminModule. Mě to funguje i bez toho, ale nevím, jestli je to čisté.

Řešení tam je :-) Je tam napsáno, že jsem to předělal do modulů oboje. Jednak se mi v tom i nyní lépe orientuje, protože je vše v modulech, a ne pouze část, a druhá věc je to, že jsem to za nic na světě nedokázal rozjet tak, aby fungovala administrace jako modul a front bez modulu.

Petr Stribny
Člen | 16
+
0
-

Taky jsem řešil stejnou věc. A nedokážu si představit (strávil jsem nad tím dost času), že by to bez toho druhého modulu fungovalo správně. I když se ti podaří vyřešit mapování URL na presentery, tak ti bude podle mě haprovat generování odkazů.