Lokalizace formatu datumu
- saimons
- Člen | 293
Jakym zpusobem resite u mezinarodnich webu ruzne formaty datumu. Nechavate lidi nastavit format dle vlastni volby, nebo spojujete tuto volbu s jazykem? Jak resite pak konkretne vypis v sablonach Nette? Je vhodne na to pouzit helper? V cele aplikaci pouzivam datum jako objek DateTime, takze muzu pouzivat fci format(). Pokud se nekdo bude chtit podelit o sve zkusenosti, dekuji.
- mkoubik
- Člen | 728
Vytvoř si helper
class DateFormatHelper
{
private $format;
public function datetime(\DateTime $datetime)
{
return $datetime->format($this->format);
}
}
zaregistruj si ho jako službu v DI kontejneru a zároveň do šablony v
createTemplate()
.
public function injectHelper(DateFormatHelper $helper)
{
$this->helper = $helper;
}
public function createTemplate($class = NULL)
{
$template = parent::createTemplate($class);
$template->registerHelper('datetime', array($this->helper, 'datetime'));
return $template;
}
Výhoda je že máš ten formát na jednom místě a můžeš ho kdykoliv
jednoduše změnit. Načítat ho můžeš buď jako parametr konstruktoru,
z databáze, případně z jakékoliv jiné služby kterou si injectneš do
DateFormatHelper
.
V šabloně se pak použije takhle: {$date|datetime}
.
Editoval mkoubik (21. 8. 2013 17:23)