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
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)