Jak v Nette 2.3 zaregistrovat filter (helper) pro práci s datem?

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

V basepresenteru mám

	public function createTemplate($class = NULL) {
		$template = parent::createTemplate();
		$template->setTranslator($this->translator);
		$latte = $template->getLatte();
		$latte->addFilter(NULL, array($this->myHelpers, 'loader'));
		return $template;
	}

můj helper má potom loader metodu

	public function loader($arg)
	{
		$arg = func_get_args();
		$func = array_shift($arg);
		if (method_exists($this, $func))
		{
			return call_user_func_array(array($this, $func), $arg);
		}
		else return null;
	}

Filtry, které manipulují se stringy jsou v pořádku, ale pokud chci naformátovat datum, tak se filtru nepředá datetime ani string – respektive nic a vyhodí mi to, že
Filter 'langDate' is not defined. (protože si vrátím v metodě null)

Metoda langDate v mém helperu vypadá takto:

	public function langDate($time, $lang) {
		if($time === NULL) {
			return NULL;
		}
		if (!$time instanceof \DateTime ) {
			$time = \Nette\DateTime::from($time);
		}

		if ($lang == "en")
			return $time->format("Y-m-d");
		else
			return $time->format("d.m.Y");
	}

V šabloně pak volám {$forumTopic->created|langDate:$lang} což je objekt DateTime

Editoval Ivorius (10. 5. 2015 14:24)

vvoody
Člen | 910
+
0
-

Nemáš tento problém náhodou v šablóne komponenty?

Ivorius
Nette Blogger | 119
+
0
-

No jo, pravda. Zapomněl jsem si to změnit v komponentě. Díky :)

Honzy
Člen | 22
+
0
-

Prisel si nakonec na to, jak dostat filtry do komponenty?

zool
Člen | 144
+
0
-

Třídu s filtry vložit přes konstruktor. V šabloně(komponenty) by měly normálně fungovat v nové verzi nette(2.3), ve straré jsem to registroval v nějaké basové třídě komponent stejně jako v presenteru.

Editoval zool (14. 10. 2015 8:26)