Předání parametru z presenteru do control

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

V bootstrap nastavím routování tak, aby z url bralo jazyk a předalo ho presenteru do proměnné lang.

V basePresenteru inicializuji vlastní translator, který si zjistí předanou proměnou.

Když potom v šabloně presenteru zkusím získat patřičný kus textu, tak vše krásně funguje.

Když se ovšem pokusím získat patřičný kus textu ve snippetu, tak mi to vrátí, že volám neexistující funkci translate. Našel jsem, že je potřeba inicializovat translator i v baseControl. Když tak učiním, vše krásně funguje.

Teď k dotazu: Jak předat do baseControl hodnotu proměnné $Lang z basePresenteru?

Aurielle
Člen | 1281
+
0
-

To potřebuješ udělat proč? Normálně ve startupu BasePresenteru nastav aktuální jazyk, který získáš z persistentního parametru a v Controlu i Presenteru zaregistruj translator, nic víc není potřeba…

2bfree
Člen | 248
+
0
-

Jak se translator inicializovany v Controlu dostane k parametru z presenteru?

Aurielle
Člen | 1281
+
0
-

Presenter:

/** @persistent */
public $lang = 'cs';

protected function startup()
{
	Environment::getService('Nette\ITranslator')->lang = $this->lang;
}

// Registrace v Controlu stejným způsobem
protected function createTemplate()
{
	$template = parent::createTemplate();
	$template->setTranslator(Environment::getService('Nette\ITranslator'));

	return $template;
}

Editoval gmvasek (2. 12. 2010 15:26)

2bfree
Člen | 248
+
0
-

Díky moc. Zkusím. ;)

2bfree
Člen | 248
+
0
-

Tak upřímně nevím, kde je chyba, ale aplikace mi hlásí:

InvalidStateException
Service ‚Nette\ITranslator‘ not found.

Ačkoliv používám nejnovější Nette pro PHP5.3

Mesiah
Člen | 240
+
0
-

Zkousel jste dat misto Nette/ITranslator dat ten Vas?