problem se zmenou url handleChangeLocale
- vosy
- Člen | 532
ahoj mam anglickou URL „http://www.bt.loc/en/tours/motoen-spain“
pak mam ceskou vlajecku a na ni odkaz
<a n:href="changeLocale!, cs"><img src="{$basepath}/images/front/langs/cs.png" alt="Česky" /></a>
vygenerovany odkaz je „http://www.bt.loc/zajezdy/moto“
ale odkaz by mel byt „http://www.bt.loc/zajezdy/moto-spanelsko“
changeLocale mam
public function handleChangeLocale($locale)
{
$this->locale = $locale;
$this->redirect('this');
}
prijde mi jako by se nepredaval posledni parametr „spain“ ale netusim jak to odzkouset
- vosy
- Člen | 532
smeruje na spanelsko protoze to jsou zajezdy ve spanelsky, ne spanelsky
v BasePresenteru mam
/** @persistent */
public $locale;
a routy vypadaji takto
/* SEZNAM ZAJEZDU */
$frontRouter[] = new Route('[<locale cs|en|de>/]<presenterUri>/<typ1>[-<typ2>]',
array(
'presenter' => NULL,
'action'=>'default',
'locale'=>'cs',
'typ1'=>NULL,
'typ2'=>NULL,
NULL => array(
Route::FILTER_IN => function($params)
{
if($params['typ1'])
{
$params['presenter'] = 'Tours';
$params['typ1'] = $this->UrlTransform->uriToTyp1($params['typ1'], $params['locale']);
if($params['typ2'])
{
$params['typ2'] = $this->UrlTransform->uriToTyp2($params['typ2'], $params['locale']);
}
unset($params['presenterUri']);
// print_r($params);
return $params;
}else
{
return NULL;
}
},
Route::FILTER_OUT => function($params) {return NULL;}
)
));
$frontRouter[] = new Route('[<locale cs|en|de>/]<presenter>/<typ1>[-<typ2>]',
array(
'presenter' => NULL,
'action'=>'default',
'locale'=>'cs',
'typ1'=>NULL,
'typ2'=>NULL,
NULL => array(
Route::FILTER_IN => function($params) {return NULL;},
Route::FILTER_OUT => function($params)
{
if($params['typ1'])
{
$params['typ1'] = $this->UrlTransform->typ1ToUri($params['typ1'], $params['locale']);
if($params['typ2'])
{
$params['typ2'] = $this->UrlTransform->typ2ToUri($params['typ2'], $params['locale']);
}
$params['presenter'] = $this->UrlTransform->toursToUri($params['locale']);
// print_r($params);
return $params;
}else
{
return NULL;
}
}
)
));
Editoval vosy (4. 6. 2014 18:38)
- Pavel Macháň
- Člen | 282
vosy napsal(a):
smeruje na spanelsko protoze to jsou zajezdy ve spanelsky, ne spanelsky
v BasePresenteru mam
/** @persistent */
public $locale;a routy vypadaji takto
…
\--
Já překládání slugu neřeším v routě ale v handle metodě. Když vyvolám hadle na změnu jazyka tak vím jaký produkt/zájezd/atd mám. Pomocí toho zjistím z DB slug pro potřebný jazyk a přesměruju na adresu urcenou pro new jazyk.