Perzistentý parameter nie je dostupný pri 4×x

Danndy
Člen | 35
+
0
-

Zdravím vás.

Mám nasledovný problém s perzistentným parametrom.

Pre jazykovú mutáciu používam Kdyby/Translation, tak ako sa píše v dokumentácii mám v BasePresenteru

	/** @persistent */
public $locale;

	public function startup() {
		parent::startup();

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

Následne používam premennú $locale v šablone (@layout.latte) (pre zobrazenie aktuálne použitého jazyka vo formáte vlajočky) a všetko funguje ako má, až do momentu kým sa zobrazí 404 (alebo iný error presenter) v tomto prípade premenna $locale má v šablone hodnotu NULL a preto nieje možne v šablone s touto premennou „počítať“.

Robím niekde chybu? Ako v ErrorPresenter-u sa dostanem k hodnote tejto perzistentnej premennej?

Ďakujem.

Oli
Člen | 1215
+
0
-

Muzes bud podedit BasePresenter nebo si ji předat nějak jinak. Pokud ji máš v BasePresenteru a ErrorPresenter z něj nedědí, tak se nemá jak dostat k té proměnné.

Danndy
Člen | 35
+
0
-

ErrorPresenter nededí od BasePresenter-a, ale pri napríklad 404 ErrorPresenter následne vola Error4×xPresenter ktorý od BasePresenter-u dedí, ale aj keď si dám v BasePresenteru dump($this->locale); tak pri 404 má hodnotu NULL pričom keď spustím napr HomepagePresenter tak ten istý dump() mi správne zobrazí hodnotu premennej $this->locale (sk|en|de – podla zvoleneho jazyka).

Zuben45
Člen | 268
+
+1
-

Dřív jsem to řešil krkolomně přes str_replace z url match atd..

Dnes bych asi použil tento způsob – https://forum.nette.org/…-v-nette-2-2#…