How can I set the default date format for Twig templates in Symfony2?

匿名 (未验证) 提交于 2019-12-03 02:06:01

问题:

Twig documentation describes how to set the default date format for the date filter:

$twig = new Twig_Environment($loader); $twig->getExtension('core')->setDateFormat('d/m/Y', '%d days'); 

How can do this setting globally in Symfony2?

回答1:

For a more detailed solution.

in your bundle create a Services folder that can contain the event listener

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');     } } 

Then we will want symfony to find this listener. In the Resources/config/services.yml file put

services:     twigdate.listener.request:         class: MyApp\AppBundle\Services\TwigDateRequestListener         arguments: [@twig]         tags:             - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 

by specifying @twig as an argument it will be injected into the TwigDateRequestListener

Make shure that your importing the services.yml at the top of app/config.yml

imports:     - { resource: @MyAppAppBundle/Resources/config/services.yml } 

Now you should be able to skip the format in the date filter as such

{{ myentity.dateAdded|date }} 

and it should get the formatting from the service.



回答2:

As of Symfony 2.7, you can configure the default date format globally in config.yml:

# app/config/config.yml twig:     date:         format: d.m.Y, H:i:s         interval_format: '%%d days'         timezone: Europe/Paris 

The same is also possible for the number_format filter. Details can be found here: http://symfony.com/blog/new-in-symfony-2-7-default-date-and-number-format-configuration



回答3:

In controller you can do

$this->get('twig')->getExtension('core')->setDateFormat('d/m/Y', '%d days'); 


回答4:

The global Twig configuration options can be found on:

http://symfony.com/doc/2.0/reference/configuration/twig.html

In my opinion the 'date_format' option should be added here, since making use of the Sonata Intl bundle is overkill for most of the users.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!