Symfony : Afficher des dates en français dans Twig

—————————————————– Version 2023 ——————————————-
L’article n’étant plus d’actualité, voici une mise à jour rapide :
Il faut à présent utiliser le filtre format_datetime de twig

Pour cela il est nécessaire d’installer

composer require twig/intl-extra

et

composer require twig/extra-bundle

Ensuite on peux l’utiliser dans twig sur un objet date pour par exemple afficher « Novembre 2023 »

{{ maDate|format_datetime(pattern='MMMM Y') }}

—————————————————– Version 2018 ——————————————-

Lorsque travaille sous Symfony, avec des templates twig, on peut afficher des dates (généralement stocké coté PHP sous forme de DateTime()) grâce au filtre « date » de la façon suivante :

{{maDate|date('d/m/Y')}}//affiche la date au format 22/01/2018

Mais si l’on veux un affichage textuel en français du type « lundi 22 janvier 2018 » il nous faut utiliser une extension twig.
Pour installer cette extensions (ainsi que d’autres) dans votre projet, il faut lancer la commande composer suivante :

composer require twig/extensions

Nous devons ensuite configurer l’extension « intl » qui nous intéresse, dans le fichier de configurations des services :

services:
    twig.extension.intl
:
        class
: Twig_Extensions_Extension_Intl
        tags
:
            - { name
: twig.extension }

Le filtre « localizeddate » est maintenant utilisable et permet d’afficher la date au format que l’on souhaite, et dans la langue que l’on souhaite (en utilisant par défaut la langue configuré dans notre projet symfony) En voici 2 exemples.

{{entity.dateEvent|localizeddate('none', 'none', null, null, 'EEEE')}}//lundi
{{entity.dateEvent|localizeddate('none', 'none', null, null, 'MMMM Y')}}//Janvier 2018

Pour plus d’information veuillez vous référez au documentations suivantes :
http://twig-extensions.readthedocs.io/en/latest/intl.html#localizeddate
http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax

7 réflexions sur « Symfony : Afficher des dates en français dans Twig »

  1. Yorick

    Hélas, « twig/extensions » est dépréciée. Elle a manifestement été remplacée par le composant « Intl », mais dont je n’ai malheureusement pas encore pu comprendre l’utilisation avec twig. Des idées ? Merci pour ce site en toute cas.

    Répondre
  2. Fabrice

    Bonjour
    Je cherche la même chose pour symfony 5 et je ne trouve pas… vous faites comment? C’est fou, un truc si simple en principe…

    Répondre
  3. JSweam

    J’ai moi aussi pas mal galérer avec les dates avec Symfony 4 ou 5.1.
    Si vous souhaitez éviter l’installation d’une entesion twig dans composer, il y a la possibilité d’utiliser l’extension Twig qui suit (à placer dans src/Twig/AppExtension.php).
    Puis rien de plus simple pour l’utiliser : {{ date|intldate(« YYYY ») }}

    setPattern($intlformat);
    $output = ucfirst($formatter->format($date));
    return $output ;
    }
    }

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.