Twigでカスタム関数を使用する 質問する

Twigでカスタム関数を使用する 質問する

テンプレートでサーバーのタイムゾーンを出力したいです。

私のテンプレートには次のようなものがあります

{{ 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 }}

ちなみに、同じクラスでフィルターと関数の両方を定義できます。

おすすめ記事