J'utilise dans une extension twig le composant intl pour obtenir le symbole de la devise.Sf2: composant Intl, formatCurrency
Assez simple car elle est bien expliquée here.
Mais ce que je voudrais faire est de formater le prix en fonction de la devise/locale.
Il y a en effet une formatCurrency méthode dans le composant intl (NumberFormatter class)
<?php
namespace SE\AppBundle\Twig;
use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Intl\Intl;
class PriceExtension extends \Twig_Extension
{
private $em;
private $requestStack;
public function __construct(EntityManager $em, RequestStack $requestStack)
{
$this->em = $em;
$this->requestStack = $requestStack;
}
public function getFilters()
{
return array(
new \Twig_SimpleFilter('price', array($this, 'priceFilter')),
);
}
public function priceFilter($price)
{
$request = $this->requestStack->getCurrentRequest();
$currency_code = $request->cookies->get('currency');
$exchange_rate = $this->em->getRepository('ApiBundle:ExchangeRates')->findOneBy(array('code' => $currency_code));
$price = $price*$exchange_rate->getRate();
// Get the currency symbol
// $symbol = Intl::getCurrencyBundle()->getCurrencySymbol($currency_code);
// $price = $symbol.$price;
// Undefined formatCurrency method
$price = Intl::getCurrencyBundle()->formatCurrency($price, $currency_code);
return $price;
}
public function getName()
{
return 'price_extension';
}
}
Comment pourrais-je être en mesure d'utiliser la méthode de formatCurrency?
Vérifiez à nouveau. Comme je l'ai mentionné, j'utilise le composant. Mais si je reçois le paquet de devises, c'est là que j'ai fait une erreur. Tout ce que j'ai besoin de savoir, c'est comment puis-je utiliser celui du composant alors. https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php – Brieuc