在我的模板中,我想输出服务器时区.
我的模板有类似的东西
{{ getservertimezone }}
Run Code Online (Sandbox Code Playgroud)
然后在我所拥有的捆绑的services.yml配置中
my.twig.extension:
class: My\WebsiteBundle\Extensions\Twig\SomeTemplateHelper
tags:
- { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)
我的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';
}
}
Run Code Online (Sandbox Code Playgroud)
但我不能称之为这种方法,除非它像过滤器那样使用{{ someval | getservertimezone }},有没有办法直接{{ getservertimezone() }}调用?
Vad*_*man 41
用getFunctions()而不是getFilters()
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('server_time_zone', array($this, 'getServerTimeZone')),
);
}
Run Code Online (Sandbox Code Playgroud)
Twig过滤器用于过滤某些值.
{{ "some value" | filter_name_here }}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您可以在同一个类中定义过滤器和函数.
小智 6
在较新版本的Twig中,他应该使用Twig_SimpleFunction而不是Twig_Function_Method和Twig_SimpleFilter而不是Twig_Filter_Method,因为弃用了Twig _*_ Method(我使用的是Twig v.1.24.0和Symfony 2.8.2)
| 归档时间: |
|
| 查看次数: |
40117 次 |
| 最近记录: |