Jak lze do komponenty vložit translator?
- fary
- Člen | 155
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
Latte\Template je internal class. Jsi si jisty, ze volas setTranslator?
- David Matějka
- Moderator | 6445
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
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?