Lokalizace formatu datumu

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

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
+
0
-

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)