Je veux convertir le nombre au format monétaire dans magento2 comme nous le faisons dans Magento 1.x avec ceci
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Comment faire de même dans Magento2?
Je veux convertir le nombre au format monétaire dans magento2 comme nous le faisons dans Magento 1.x avec ceci
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Comment faire de même dans Magento2?
Réponses:
Dans magento 2, il n'y a pas de module 'core'. Vous pouvez l'obtenir en suivant le chemin dans le fichier de vue (.phtml)
$ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> currency (number_format (50,2), true, false);
currency()
La méthode utilisera la devise du périmètre actuel pour la conversion.
number_format()
et juste passer le montant:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
Tout d'abord, n'effectuez pas le formatage des devises dans vos fichiers d'affichage (.phtml), utilisez des aides ou des blocs ou une combinaison des deux.
La réponse acceptée utilise une number_format
fonction qui ne devrait pas du tout être utilisée, du moins je n'irais pas avec cette approche.
Vous pouvez essayer d'utiliser un modèle:
Modèle de type Magento\Directory\Model\Currency
. Fonctionne format()
car c'est celui qui est responsable des décimales et du formatage.
Exemple supposant des variables $model
et $product
ayant été instanciées:
$model->format($product->getPrice(), array('symbol' => ''), false, false)
2 décimales pour le formatage sans $
dollar à côté du montant. Passez vide array()
si vous voulez que la devise du magasin soit ajoutée à votre montant.
Magento\Directory\Model\Currency
fait et pourquoi devrait-il être utilisé? Examine-t-il la configuration actuelle de la devise de la vue de magasin ou la devise sélectionnée par le client?
Currency
dans le module Annuaire est comme une aide pour manipuler la valeur finale du prix. Dans l'exemple de l'assistant du Framework, vous pourrez convertir le prix dans la bonne devise du magasin, mais vous n'avez aucun contrôle sur la précision du montant et devrez étendre les classes pour le personnaliser. La devise est l'opposé où elle attend le montant final mais vous permet de personnaliser le formatage, la précision décimale, etc.
Ce que vous voulez faire est d'injecter le " PriceCurrencyInterface " dans le bloc du fichier modèle dans lequel vous souhaitez l'utiliser.
template.phtml
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (Classe de bloc du modèle ci-dessus ... quel qu'il soit)
<?php
namespace \Whatever
use Magento\Framework\Pricing\PriceCurrencyInterface;
use Magento\Framework\View\Element\Template;
class Item extends Template
{
/** @var PriceCurrencyInterface $priceCurrency */
protected $priceCurrency;
public function __construct(
Template\Context $context,
PriceCurrencyInterface $priceCurrency,
array $data = []
) {
parent::__construct($context, $data);
$this->priceCurrency = $priceCurrency;
}
/**
* Function getFormatedPrice
*
* @param float $price
*
* @return string
*/
public function getFormatedPrice($amount)
{
return $this->priceCurrency->convertAndFormat($amount);
}
Cela a l'avantage supplémentaire d'afficher le format correct en fonction des paramètres régionaux actuels du magasin. Il propose également d'autres méthodes qui pourraient être utiles, consultez-les ...
Assurez-vous de vérifier la signature de la méthode car vous pouvez configurer le résultat que vous souhaitez afficher, comme le conteneur et la précision .
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
À votre santé!
Vous pouvez l'obtenir en suivant le chemin dans le fichier de vue (.phtml).
prix $ = 5,5; $ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> currency ($ price, true, false);
currency($value, $format = true, $includeContainer = true)
$this->
quand j'appelle votre suggestion à l'intérieur d'une fonction
Utilisation de l'aide à la tarification
<?php
namespace \Vendor\Module
class MyClass extends Template
{
public $priceHelper;
public function __construct(
Template\Context $context,
\Magento\Framework\Pricing\Helper\Data $priceHelper,
array $data = []
) {
parent::__construct($context, $data);
$this->priceHelper = $priceHelper;
}
public function myCustomFunction($product) {
return $this->priceHelper->currency($product->getPrice(),true,false);
}
}
Cela génère un prix et un symbole monétaire d'un produit donné.