Как установить формат даты по умолчанию для шаблонов Twig в Symfony2? - PullRequest
11 голосов
/ 27 марта 2012

В документации Twig описано, как установить формат даты по умолчанию для фильтра date:

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

Как сделать этот параметр глобально в Symfony2?

Ответы [ 4 ]

20 голосов
/ 31 марта 2012

Для более подробного решения.

в вашем пакете создайте папку «Службы», которая может содержать прослушиватель событий

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

Убедитесь, что вы импортируете services.yml вверху app/config.yml

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

Теперь вы можете пропустить формат в фильтре даты как таковой

{{ myentity.dateAdded|date }}

и он должен получить форматирование из сервиса.

12 голосов
/ 11 апреля 2015

Начиная с 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 голосов
/ 27 марта 2012

В контроллере вы можете сделать

$this->get('twig')->getExtension('core')->setDateFormat('d/m/Y', '%d days');
0 голосов
/ 25 февраля 2013

Глобальные параметры конфигурации Twig можно найти по адресу:

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

По моему мнению, здесь следует добавить опцию 'date_format', поскольку использование пакета Sonata IntlИзбыток для большинства пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...