getParam nepředá diakritiku
- Aurielle
- Člen | 1281
Zdravím,
snažím se vyřešit kanonizaci URL ze starého webu. Jednak vedou odkazy
s prvním písmenem velkým, ty zpracovávám bez problémů. Problém je
s parametry na index.php, kde adresa vypadá třeba takto: http://www.runescapewiki.cz/index.php?…. Když v default
presenteru odchytím výskyt parametru title a forwardnu na kanonizační action
tak to sice funguje, ale z parametru se odstraní veškerá diakritika, takže
se místo Hlavní_strana předá Hlavn_strana.
Zkoušel jsem i experimentovat se styly v routách, ale nejsem s nimi moc kamarád. Budu vděčný za rady, díky.
- Aurielle
- Člen | 1281
Zatím jsem si napsal toto jako walkaround, ale není to moc nette-like:
// Request ve tvaru localhost/runescapewikicz/?title=Hlavní_strana
public function actionDefault()
{
if($this->getParam('title'))
{
// $request = $this->getParam('title'); // $request => 'Hlavn_strana'
$request = iconv('CP1250', 'UTF-8', $_GET['title']); // $request => 'Hlavní_strana' po převodu na utf-8
// Debug::dump($_GET['title']) => 'Hlavn\xed_strana'
$this->forward('Article:compatibility', $request);
}
}
- Ondřej Mirtes
- Člen | 1536
Nešlo by to přesměrovávání provést na úrovní one way routeru anebo v .htaccess?
Ale bug to nejspíš je, to jo.
- David Grudl
- Nette Core | 8228
Aby tohle fungovalo, je potřeba nastavit v bootstrapu
Environment::getHttpRequest()->setEncoding('windows-1250');
nicméně jak jsem to právě prověřoval, tak kvůli jednomu bugu to aktuálně nepomůže. Opravím.