Как установить формат даты по умолчанию для шаблонов Twig в Symfony2?
документация Twig описывает, как установить формат даты по умолчанию для date
фильтр:
$twig = new Twig_Environment($loader);
$twig->getExtension('core')->setDateFormat('d/m/Y', '%d days');
Как сделать эту настройку глобально в Symfony2?
4 ответов
для более детального решения.
в вашем комплекте создайте папку служб, которая может содержать прослушиватель событий
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 нашел этого слушателя. В поставить
services:
twigdate.listener.request:
class: MyApp\AppBundle\Services\TwigDateRequestListener
arguments: [@twig]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
указав @twig в качестве аргумента, он будет введен в TwigDateRequestListener
убедитесь, что ваш импорт услуг.yml в верхней части app/config.yml
imports:
- { resource: @MyAppAppBundle/Resources/config/services.yml }
теперь вы должны иметь возможность пропустить формат в фильтр даты как таковой
{{ myentity.dateAdded|date }}
и он должен получить форматирование из службы.
как в 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
в контроллере вы можете сделать
$this->get('twig')->getExtension('core')->setDateFormat('d/m/Y', '%d days');
глобальные параметры конфигурации Twig можно найти на:
http://symfony.com/doc/2.0/reference/configuration/twig.html
на мой взгляд, здесь следует добавить опцию "date_format", так как использование пакета Sonata Intl является излишним для большинства пользователей.