Ako nastaviť Router tak, aby pri zmene jazyka preložil URL?
- pseudonym
- Člen | 57
Ahojte, snažím sa rozbehnúť jazykové mutácie pre svoj projekt a teda
podľa článku https://doc.nette.org/…tion/routing
sa snažím upraviť Router. Cieľom má byť, že keď v šablone kliknem na
odkaz EN, načíta sa mi .../en/contact-form
a ak kliknem na SK tak
sa mi načíta .../sk/kontakt
Mám vytvorené dve šablony pre contact-form
aj pre
kontakt
. Keď klikám EN či SK, vždy mám v URL iba
contact-form
(či už je pred tým sk/
alebo
en/
). Keď do prehliadača natvrdo zadám
.../sk/kontakt
, tak ma správne routuje na slovenskú mutáciu.
Prosím, poraďte mi (najlepšie rovno s vysvetlením, aby som tomu rozumel), ako donútim Router, aby zmenil adresu.
BasePresenter.php obsahuje perzistentný parameter:
/** @persistent */
public $lang;
Bootstrap.php obsahuje túto routu:
$frontRouter[] = new Route('<lang (?-i)sk|en>/<action>[/<id>]',
array(
'presenter' => array(
Route::VALUE => 'Default',
Route::FILTER_TABLE => array(
'kontakt' => 'contact-form',
'vyhladavanie' => 'search',
),
),
'action' => 'default',
'lang' => 'sk'
),
$secured
);
V šablone mám tieto linky:
<li><a n:href="this, lang => sk">SK</a></li>
<li><a n:href="this, lang => en">EN</a></li>
Taktiež by som sa chcel opýtať na <lang (?-i)sk|en>
v Routeri, videl som to v source kóde http://davidgrudl.com/ (zrejme to bude nejaký regulárny
výraz, ale neprišiel som na to čo presne znamená, viem len, že
funguje).
- Majkl578
- Moderator | 1364
Taktiež by som sa chcel opýtať na <lang (?-i)sk|en> v Routeri, videl som to v source kóde http://davidgrudl.com/ (zrejme to bude nejaký regulárny výraz, ale neprišiel som na to čo presne znamená, viem len, že funguje).
Lokální vypnutí case insensitivity pro danou část regulárního výrazu (globálně je pro routy defaultně zapnuto).
- pseudonym
- Člen | 57
Čiže to vypnutie je konkrétne celá tá zátvorka? Teda konkrétne toto
(?-i)
?
Viem si niekde presne pozrieť ako sa používajú takéto „prepínače“?
Nejaká dokumentácia?
Edit:
Toto bola len taká podotázka. Nevieš/te náhodou pomôcť aj s tou hlavnou
otázkou?
Editoval pseudonym (27. 8. 2013 12:44)
- pseudonym
- Člen | 57
Skusim sa opytat este raz a mozno trocha inak.
Vie mi niekto poradit, co mam spravit pre to, aby pri zmene jazyka
(perzistentny atribut $lang) router vybral zo „slovnika“
Route::FILTER_TABLE
kluc a nie hodnotu (teda prelozeny text a nie
ten anglicky)?]
Resp. ako inak sa tento „slovnik“ da vyuzit? Ako a kde mam
naimplementovat podmienenu funkcnost na zaklade vyberu jazyka? Potrebujem nejako
manualne vytvarat template
tak ako to robi David Grudl na svojej
stranke v sources (davidgrudl.com)
// create template
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/app/' . $lang . '.latte');
s tym, ze si povytvaram sablony typu nazov_sablony.latte
a
en.nazov_sablony.latte
?