Jak lze do komponenty vložit translator?

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

Používám Nette 2.2 a nedaří se mi do komponent dosat translator. Potřeboval bych jej alespoň v šablonách komponent, ale když napíšu:

final class MyControl extends Nette\Application\UI\Control
{

	private $translator;

	public function setTranslator(Translator $translator)
	{
		$this->translator = $translator;
	}


	protected function createTemplate($class = NULL)
	{
		$template = parent::createTemplate($class = NULL);
		$template->setTranslator($this->translator);

		return $template;
	}

}

Tak mi Laděnka vypíše: „LogicException: Call to undefined method Latte\Template::translate()“. To je ovšem zvláštní, protože podle API dokumentace žádná třída Latte\Template neexistuje, existuje ovšem třída Nette\Bridges\ApplicationLatte\Template.

Není to chyba? Po setnutí translatoru se totiž metoda translate() volá právě na třídě Template, ovšem měla by se volat na třídě translatoru.

Nedokázal by prosím někdo ze zdejších uživatelů poradit, jak toto udělat?

Editoval fary (17. 8. 2014 18:59)

David Matějka
Moderator | 6445
+
+1
-

Latte\Template je internal class. Jsi si jisty, ze volas setTranslator?

fary
Člen | 155
+
0
-

A co přesně znamená internal class? Je to něco specifické pro Nette nebo to v PHP normálně existuje?

David Matějka
Moderator | 6445
+
0
-

tak jsou oznaceny tridy/metody, ktere pouziva pouze ona knihovna a uzivatel knihovny by se k ni nemel dostat. Tudiz je i vynechana v api dokumentaci

fary
Člen | 155
+
0
-

Stejně je to zvláštní. Podle zdrojového kódu by se měl vytvořit Latte helper a ve třídě Latte\Template by tak měla vniknout metoda, která ten helper reprezentuje. Jeden helper jsem si vytvořil a ten funguje, ale proč nefunguje toto nevím. Na instanci Nette\Bridges\ApplicationLatte\Template volám setTranslator tak, jak je to v dokumentaci a nefunguje to. Přitom ta metoda setTranslator by měla být jen zkratkou pro vytvoření toho helperu, že?

David Matějka
Moderator | 6445
+
0
-

A jsi si jisty, ze v tom kontrolu mas translator nastaven?

fary
Člen | 155
+
0
-

Grrr. Bylo to tak. Špatně jsem jej nasetoval. opravil jsem to a už to celé funguje bez problému. Moc díky. :-)