Création d'une extension Twig de filtre personnalisé
14 12 2016
2 commentaires

On a souvent besoin des filtres Twig pour mettre en forme les objets dans les templates. Voici la liste officielle des filtres Twig existants.
Cependant quand les filtres Twig existants ne suffisent pas, on peut avoir recourt à la création d'une extension de filtre Twig personnalisé.
Par exemple pour les sites e-commerce, on a besoin d'un filtre qui calcule la TVA d'un produit affichant un prix HT afin de calculer le montant TTC (rappel : prix HT + TVA = prix TTC). Car en effet sur un site e-commerce tous les prix des produits rentrés en base sont obligatoirement HT.
Création d'un filtre personnalisé de calcul de la TVA
On doit tout d'abord créer un dossier Twig/Extension dans le dossier src.
Ce dossier va contenir la classe du filtre que nous allons appeler TvaExtension.php
Nous allons dès maintenant déclarer cette extension en tant que service dans le fichier services.yml
services:
tva:
class: Boutique\BoutiqueBundle\Twig\Extension
\TvaExtension
tags:
- { name: twig.extension }
On déclare donc la classe Boutique\BoutiqueBundle\Twig\Extension
\TvaExtension et on précise dans les tags que c'est une extension Twig en écrivant - { name: twig.extension } (sinon le filtre Twig ne marchera pas)
Maintenant occupons-nous du fichier TvaExtension.php.
<?php
namespace Boutique\BoutiqueBundle\Twig
\Extension;
class TvaExtension extends \Twig_Extension
{
public function getFilters() //méthode obligatoire pour nommer le filtre dans twig
{
return array(new \Twig_SimpleFilter('tva', array($this,'calculTva')));//on nomme simplement le filtre que l on va utilisé dans twig. On le nome tva et on lui associe la méthode calculTva
}
function calculTva($prixHT,$tva) //définition de la méthode principale du filtre tva
{
$prixTTC = round($prixHT/$tva,2);
return $prixTTC;
}
public function getName() //méthode obligatoire pour nommer le filtre dans twig
{
return 'tva_extension';
}
}
Et maintenant on peut appliquer dans le template le filtre à la variable {{produit.prix}}
{{produit.prix|tva(produit.tva.multiplicate)| number_format(2, '.', ',')}} €
Attention il y a un ordre pour les paramètres de la méthode calculTva($prixHT,$tva). on définit les parametre de la vue : le premier parametre est produit.prix et le deuxieme parametre est produit.tva.muliplicate
produit.tva.muliplicate étant le multiplicateur de la TVA contenu dans une entité Tva lié à Produits en n..1 et ayant comme attribut multiplicate avec par exemple une valeur égale à 0.833 (pour la TVA à 20%).
Pour obtenir le coefficient multiplicateur c'est de la gestion : on fait coeff = prix HT/prix TTC=0.833 (pour la TVA à 20%)
catégorie: Twig
Commentaires
Become a successful trader and start making up to $5000 a day.
The more you earn, the more we both profit.Copy Binary Options Trades
Master the art of trading and make up to $5000 a day. The more you earn, the more we both benefit.M posté le 22/02/2023 à 03:11
Master the art of trading and make up to $5000 a day.
The more you earn, the more we both benefit.Mirror Trading