テンプレートでサーバーのタイムゾーンを出力したいです。
私のテンプレートには次のようなものがあります
{{ getservertimezone }}
そしてservices.yml
そのバンドルの設定では
my.twig.extension:
class: My\WebsiteBundle\Extensions\Twig\SomeTemplateHelper
tags:
- { name: twig.extension }
そして私のSomeTemplateHelper
見た目は
namespace My\WebsiteBundle\Extensions\Twig;
class SomeTemplateHelper extends \Twig_Extension
{
public function getFilters()
{
return array(
'getservertimezone' => new \Twig_Filter_Method($this, 'getServerTimeZone'),
);
}
public function getServerTimeZone()
{
if (date_default_timezone_get()) {
return date_default_timezone_get();
} else if (ini_get('date.timezone')) {
return ini_get('date.timezone');
} else {
return false;
}
}
public function getName()
{
return 'some_helper';
}
}
しかし、フィルターのように使用されない限り、このメソッドを呼び出すことはできません。{{ someval | getservertimezone }}
直接呼び出す方法はありますか{{ getservertimezone() }}
?
ベストアンサー1
getFunctions()
代わりに使用するgetFilters()
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('server_time_zone', array($this, 'getServerTimeZone')),
);
}
Twig フィルターは、何らかの値をフィルターするために使用されます。
{{ "some value" | filter_name_here }}
ちなみに、同じクラスでフィルターと関数の両方を定義できます。