Ako predať handle do isLinkCurrent

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

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
+
0
-

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
+
0
-

@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
+
0
-

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

Jan Mikeš
Člen | 771
+
0
-

BasePresenter.php:

/** @persistent */
public $locale;

protected function beforeRender()
{
	parent::beforeRender();

	$this->template->activeLocale = $this->locale;
}

latte:

<li n:class="$activeLocale === 'cs' ? active">
SontoEremo
Člen | 341
+
0
-

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)