české znaky v url a problém s VisualPaginator

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

Dobrý den,

snažím se udělat přesměrování z vyhledávacího formuláře na presenter, který požadavek zpracuje:

$presenter->redirect(":SearchFrontend:Default:default", array('needle' => $needle));

V proměnné $needle je hledaný řeťezec, který obsahu české znaky, mezery a pod.
Pod Apachem, není problém. Ten nastane až na IIS 7.5, který si s českými znaky neporadí (norma non-ascii znaky v url, pokud se nepletu, dokonce zakazuje).

Napadlo mě zakódovat $needle pomocí urlencode(), což pomůže, dokud se do toho nevloží VisualPaginator, který v šabloně volá něco jako:

<a href="{link this, 'page' => $paginator->page + 1}">Další »</a>

což zakódovaný řetězec přeloží opět na verzi nezakódovanou.

Nenapadá vás jak to vyřešit?

Předem děkuji za rady.

Filip Procházka
Moderator | 4668
+
0
-

To snad dělá router automaticky, ne? Nepřepisuješ tam FILTER_OUT?

taypan
Člen | 11
+
0
-

HosipLan napsal(a):

To snad dělá router automaticky, ne? Nepřepisuješ tam FILTER_OUT?

Pokud vím, tak ne (píše to víc lidí).
Routa vypadá takto:

$router[] = new \Nette\Application\Routers\Route($prefix.'<needle>/<paginator-page>', array(
					'module' => 'SearchFrontend',
					'presenter' => 'Default',
					'action' => 'default',
					'needle' => '',
					'paginator-page' => 1
			)
		);