Problem s prekladem soucasne url
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- vosy
- Člen | 532
mam takovouto URL :http://www.bt.loc/atv/
kde se maji zobrazit zajezdy pro ctyrkolky
pak mam takovyto router pravidlo:
/* SEZNAM ZAJEZDU */
$frontRouter[] = $routeZajezd = new FilterRoute('[<locale cs|en|de>/]<typ1>/[<typ2>]',
array(
'locale' => 'cs',
'presenter' => 'Tours',
'action' => 'default',
'typ1' => NULL,
'typ2' => NULL,
));
$routeZajezd->addFilter('typ1',
array($this->UrlTransform, 'seznamZajezdu_UriToTyp1'),
array($this->UrlTransform, 'seznamZajezdu_Typ1ToUri'));
return $router;
a dane funkce jsou:
function seznamZajezdu_UriToTyp1($slug, \Nette\Application\Request $request)
{
$locale = $request->parameters['locale'];
$tab = \App\Glb::$TABS['typyStroju'];
$r = $this->db->table($tab)
->WHERE('uri_'.$locale.'=?', $slug)
->fetch();
if($r->kod!="")
{
return 'stroj_'.$r->kod;
}
return NULL;
}
function seznamZajezdu_Typ1ToUri($slug, \Nette\Application\Request $request)
{
$locale = $request->parameters['locale'];
list($typ, $id) = explode('_', $slug);
if($typ == 'stroj')
{
$tab = \App\Glb::$TABS['typyStroju'];
$r = $this->db->table($tab)
->WHERE('kod=?', $id)
->fetch();
if($r->kod!="")
{
return $r->{'uri_'.$locale};
}
}
return NULL;
}
pak mam na vlajecce odkaz:
<a n:href="changeLocale!, en"><img src="{$basepath}/images/front/langs/en.png" alt="English" /></a>
public function handleChangeLocale($locale)
{
$this->locale = $locale;
$this->redirect('this');
}
nette mi z toho vytvorilo:
<a href="/en/?do=changeLocale"><img src="/images/front/langs/en.png" alt="English"></a>
pritom ocekavane url by melo byt „/en/atv/“
kdyz si vypisu parametry:
$httpRequest = $container->getService('httpRequest');
$uri = $httpRequest->getUrl();
echo $uri;
$r = $this->getParameters();
print_r($r);
http://www.bt.loc/atv/
Array ( [typ1] => stroj_atv [locale] => cs [action] => default [typ2] => )
tak si myslim ze NETTE ma vsechno co potrebuje.
Editoval vosy (12. 6. 2014 10:37)
- vosy
- Člen | 532
function actionDefault()
{
global $container;
$httpRequest = $container->getService('httpRequest');
$uri = $httpRequest->getUrl();
echo $uri;
$r = $this->getParameters();
print_r($r);
$link = $this->link('this', array('locale'=>'en'));
echo $link;
}
vysledek je
http://www.bt.loc/moto/chile
Array ( [typ1] => stroj_moto [typ2] => destinace_36 [locale] => cs [action] => default )
/en/
?? tak to fakt nechapu :(