mercredi 23 octobre 2013

[Symfony2+Twig] Filter sur une différence de date

C'est tout bête mais je donne l'info pour calculer la différence d'une date dans un template twig.
J'en ai eu besoin dans mon actuel projet perso visible ici :
https://github.com/julnegre/activities_management/

Si ce n'est pas déjà fait ajouter à votre config.yml :
services:    
  jng.twig.jng_extension: 
        class: Jng\ActivityBundle\Twig\JngExtension 
        tags: 
            - { name: twig.extension }   

Dans votre bundle puis dans le dossier twig, pour mon projet : src/Jng/ActivityBundle/Twig/JngExtension.php
Nous allons mettre le code suivant :

class JngExtension extends \Twig_Extension 
{ 
    public function getFilters() 
    { 
        return array( 
            'diffToDate' => new \Twig_Filter_Method($this, 'diffToDateFilter'), 
        ); 
    } 

    public function diffToDateFilter($date1, $date2, $unit=null ) 
    { 
        if( is_null($date2) ) 
            return; 

        $t = $date2->getTimestamp()-$date1->getTimestamp(); 
        if( is_null($unit) ){ 
            $unit="s"; 
            if( $t >= 3600) 
                $unit = "h"; 
            else if( $t >= 60) 
                $unit = "min"; 
        } 

        if( $unit == "s" ) 
            return $t." s"; 
        else if( $unit == "min" ) 
            return round($t/60)." min"; 
        else if( $unit == "h" ) 
            return round($t/3600)." h"; 

    } 

    public function getName() 
    { 
        return 'jng_extension'; 
    } 

}

Ensuite dans votre template on pourra utiliser le filter ainsi :
{{ entity.start|diffToDate(entity.end) }}

Aucun commentaire:

Enregistrer un commentaire

[PHP] Voir sur quel fichier d'un projet il y a une erreur de syntaxe - PHP Parse error: syntax error, unexpected

Voici une commande utile pour vérifier une erreur de syntaxe php dans votre projet. La commande ci dessous scrute dans le répertoire src t...