Pomoc pri oprave routing rules – presmerovanie Admin u defaultneho jazyka

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

Zdravím,
mám nasledujúci problém:

Potrebujem mať nasledovnú štruktúru:
www.example.com
www.example.com/…st/action/id
www.example.com/en
www.example.com/…st/action/id

blog.example.com
blog.example.com/en

a nakoniec
www.example.com/sk/admin
www.example.com/en/admin

čiže klasika…

mám na to nasledujúce routing rules:

<?php

//i18n Config
$container->parameters['langs'] = array('sk', 'en');
$container->parameters['domain'] = 'example.com';

// Setup router
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);

// Blog router
$container->router[] = new Route('//<domain (blog)>.' . $container->parameters['domain'] . '/[<lang (' . implode('|', $container->parameters['langs']) . ')>/[<presenter>/[<action>/[<id>]]]]', array(
			'module' => "Blog",
			'presenter' => "Blog",
			'action' => "default",
			'lang' => current($container->parameters['langs']),
		));

// Admin router
$container->router[] = new Route('<lang (' . implode('|', $container->parameters['langs']) . ')>/admin/[<presenter>/[<action>/[<id>]]]', array(
			'module' => "Admin",
			'presenter' => "Admin",
			'action' => "default",
			'lang' => current($container->parameters['langs']),
		));

// Homepage / Default router
$container->router[] = new Route('[<lang (' . implode('|', $container->parameters['langs']) . ')>/[<presenter>/[<action>/[<id>]]]]', array(
			'presenter' => "Homepage",
			'action' => "default",
			'lang' => current($container->parameters['langs']),
		));

?>

Všetko funguje ako má, až na nasledujúci prípad:
www.example.com/sk/admin presmeruje na www.example.com/

pričom
www.example.com/en/admin funguje tak ako má, zobrazuje sa presenter z AdminMudule…

Neviete, ako to oštriť prosím, už si s tým lámem hlavu príliš dlho…

Ot@s
Backer | 476
+
0
-
  1. zruš default hodnotu pro lang v admin routě
  2. Admin Router přesuň na první místo v definici routovací tabulky.

PS: Těm „měnícím se“ hodnotám, co dolepuješ do masek routerů, se snaž vyhnonut. Mělo by to jít i bez nich.

AndyBrandy
Člen | 7
+
0
-

Ot@s napsal(a):

  1. zruš default hodnotu pro lang v admin routě
  2. Admin Router přesuň na první místo v definici routovací tabulky.

PS: Těm „měnícím se“ hodnotám, co dolepuješ do masek routerů, se snaž vyhnonut. Mělo by to jít i bez nich.

Super, tam bol pes zakopaný.

Tými meniacimi hodnotami myslíš ten implode?

Ot@s
Backer | 476
+
0
-

AndyBrandy napsal(a):

Tými meniacimi hodnotami myslíš ten implode?

Ano. Hlavně z důvodu přehlednosti. Může se stát, že člověk očekává určitou podobu masky routy a ona tam ve skutečnosti vůbec není (což se snadno pozná, když si to vydumpuje).