Case-sensitivity ve validačních výrazech rout

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

Ahoj, pracuju zatím na Nette 2.0-beta, tak doufám, že neřeším něco, co je už v poslední verzi změněné. PHP 5.3/Apache 2 na Windows.

Mám následující routu:

<?php
$router[] = new Route('<slug lorem|ipsum>', 'Foo:bar');
?>

Očekávám od ní, že mi bude chytat dotazy na url /lorem a /ipsum, což funguje naprosto v pořádku.

Ona mi ale chytá i /Lorem nebo /IPSUM, což rozhodně nechci a myslím, že to chce málokdo, kdo takovouhle routu napíše.

Minimální dotaz: Jak to udělat, aby se to vyhodnocovalo case-sensitive? Nějaký přepínač, modifikátor?

Optimální řešení: Mělo by se to myslím chovat case-sensitive defaultně, protože bych to tak intuituvně očkával.

Magické řešení: Taky by to mohlo tyhle case-sensitive varianty automaticky kanonizovat a redirectovat, což je ale možná už příliš velká a neočekávaná magie. Takže to už asi spíš ne.

Jan Tvrdík
Nette guru | 2595
+
0
-
$router[] = new Route('<slug lorem|ipsum>', 'Foo:bar', Route::CASE_SENSITIVE);

Jako výchozí chování to můžeš nastavit pomocí:

Route::$defaultFlags |= Route::CASE_SENSITIVE;
jantichy
Člen | 24
+
0
-

Díky Honzo. Mohl by prosím někdo z místních dokumentaristů doplnit zmínku o case sensitivity u rout do dokumentace na stránku https://doc.nette.org/…tion/routing Díky.

Elijen
Člen | 171
+
0
-

Me by se docela libilo to magicke chovani (volitelne zapnutelne) :-)

frosty22
Člen | 373
+
0
-

Já bych byl pro aby to bylo vždy vše malým a ostatní se redirektovalo na tuto url. Možná by mohl být problém s parametry např. pro vyhledávání, či jiný argument – kde by mohlo case-sensitive ovlivňovat výsledky.

David Grudl
Nette Core | 8218
+
0
-

jantichy napsal(a):

Díky Honzo. Mohl by prosím někdo z místních dokumentaristů doplnit zmínku o case sensitivity u rout do dokumentace na stránku https://doc.nette.org/…tion/routing Díky.

Máš už právo editovat dokumentaci.