In my template I want to output the server timezone.
My template has something like
{{ getservertimezone }}
Then in the services.yml co
See example below
namespace Your/NameSpace;
class AppExtension extends \Twig_Extension {
public function getFilters()
{
return array(
new \Twig_SimpleFilter('cdn_asset_filter', array($this, 'cdn_asset_filter')),
);
}
public function getFunctions()
{
return array(
new \Twig\TwigFunction('cdn_asset_function', array($this, 'cdn_asset_function')),
);
}
public function cdn_asset_filter($path)
{
return "https://cdn.example.com/$path";
}
public function cdn_asset_function($path)
{
return "https://cdn.example.com/$path";
}
}
// Filter
// result :
// Function
// result :
services:
my_global_filters_and_functions:
class: Your/NameSpace/AppExtension
tags:
- { name: twig.extension }
This is how i used custom functions in Twig in one my old projects, i don't know if it's a best practice, but it worked for me.
Resources : Twig Documentation - Extending Twig