Ako predať handle do isLinkCurrent
- SontoEremo
- Člen | 341
Zdravím…
Lámem si hlavu ako predať aktívny link cez handle do Šablóny
Nefunguje resp. funguje tento zápis ale len na sk keď sa prepnem na en tak
stále je active sk
<li class="{$presenter->isLinkCurrent() ? active}">
<a href="{plink locale!, sk}">
{_messages.all.fb_lang_02|translate}
</a>
</li>
<li class="{$presenter->isLinkCurrent() ? active}">
<a href="{plink locale!, en}">
{_messages.all.fb_lang_03|translate}
</a>
</li>
Ešte môj handle
public function handleLocale($locale) {
$this->translator->getLocale();
$loc = $this->translatorSession->setlocale($locale);
$this->redirect('this', ['locale' => $loc]);
}
ďakujem za pomoc/odpoveď.
- vitkutny
- Člen | 73
isLinkCurrent bez argumentů vrací true/false, dle posledního vytvořeného
requestu
https://api.nette.org/…ent.php.html#…
proto ti u SK verze nastavuje active, jelikož předchozí vytvořený request vedl na stejnou stránku. U EN se ti ale porovnává s odkazem na signál, a jelikož nejsi na signálu, tak vrací false.
V tomto případě vůbec nepoužívej $presenter->isLinkCurrent, ale
třídu active nastavuj podle parametru locale
v presenteru.
- SontoEremo
- Člen | 341
@vitkutny
teda niečo ako
$this->getParameters('locale', ['active' => $locale]);
alebo
<li class="{$this->getParameters(locale) ? active}">
Editoval SontoEremo (13. 2. 2017 22:28)
- SontoEremo
- Člen | 341
Ospravedlňujem sa za oživenie témy ale stále na to neviem prísť
ale třídu active nastavuj podle parametru locale
v presenteru.
Neviem ako to nastaviť v tom presentery
- SontoEremo
- Člen | 341
Jan Mikeš napsal(a):
BasePresenter.php:
/** @persistent */ public $locale; protected function beforeRender() { parent::beforeRender(); $this->template->activeLocale = $this->locale; }
latte:
<li n:class="$activeLocale === 'cs' ? active">
Toto som samozrejme tiež skúšal ale nefunkčné nakoľko to označí iba defaultný jazyk teda EN i keď sa prepnem do SK tak stále len EN svieti aj keď je stránka preložená
EDIT
Namiesto
$this->template->activeLocale = $this->locale;
Zmeniť na toto
$this->template->activeLocale = $this->translator->getLocale();
Editoval SontoEremo (14. 2. 2017 17:12)