Twig文档介绍了如何设置date
过滤器的默认日期格式:
$twig = new Twig_Environment($loader);
$twig->getExtension('core')->setDateFormat('d/m/Y', '%d days');
如何在Symfony2中全局进行此设置?
答案 0 :(得分:19)
有关更详细的解决方案。
在您的包中创建一个可以包含事件监听器的服务文件夹
namespace MyApp\AppBundle\Services;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class TwigDateRequestListener
{
protected $twig;
function __construct(\Twig_Environment $twig) {
$this->twig = $twig;
}
public function onKernelRequest(GetResponseEvent $event) {
$this->twig->getExtension('core')->setDateFormat('Y-m-d', '%d days');
}
}
然后我们希望symfony找到这个监听器。
在Resources/config/services.yml
文件中放置
services:
twigdate.listener.request:
class: MyApp\AppBundle\Services\TwigDateRequestListener
arguments: [@twig]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
通过将@twig指定为参数,它将被注入TwigDateRequestListener
确保您导入app/config.yml
imports:
- { resource: @MyAppAppBundle/Resources/config/services.yml }
现在您应该能够跳过日期过滤器中的格式
{{ myentity.dateAdded|date }}
它应该从服务中获取格式。
答案 1 :(得分:12)
从Symfony 2.7开始,您可以在config.yml
中全局配置默认日期格式:
# app/config/config.yml
twig:
date:
format: d.m.Y, H:i:s
interval_format: '%%d days'
timezone: Europe/Paris
number_format
过滤器也是如此。详情请见:http://symfony.com/blog/new-in-symfony-2-7-default-date-and-number-format-configuration
答案 2 :(得分:2)
在控制器中你可以做到
$this->get('twig')->getExtension('core')->setDateFormat('d/m/Y', '%d days');
答案 3 :(得分:1)
对于Symfony 4,您可以针对需要的人这样做。
twig:
...
date:
format: c
timezone: UTC
....
答案 4 :(得分:0)
至少在我的 Twig 安装(无框架)中不存在名为“core”的扩展,我不得不使用 Twig_Extension_Core
$twig->getExtension('Twig_Extension_Core')->setDateFormat($dateFormat);
在 Twig 版本 v2.14.6
中测试答案 5 :(得分:-1)
可在以下位置找到全局Twig配置选项:
http://symfony.com/doc/2.0/reference/configuration/twig.html
在我看来,应该在这里添加'date_format'选项,因为使用Sonata Intl包对大多数用户来说都是过度的。