Et si vous voulez juste un symbole de devise sur le prix? currency()La méthode utilisera la devise du périmètre actuel pour la conversion.
MagePsycho
1
Cela ne fonctionne pas pour les prix supérieurs à 1000. Le format_numère ajoute des milliers de séparateurs, ce qui cause des problèmes sur les systèmes européens où un point vaut mille séparateurs. Par exemple, un prix de 12000 EUR renvoie 12,00 €, ce qui est faux. Ensuite, vous devez supprimer le number_format()et juste passer le montant:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
Jacques
Ce n'est certainement pas la meilleure réponse, même si elle est votée la plus élevée et acceptée. Mieux approuver est la réponse de dchayka
Akif
Pour ceux qui se demandent, la signature estcurrency($value, $format = true, $includeContainer = true)
Collin Anderson
16
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_formatfonction 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 $modelet $productayant été instanciées:
Un autre avantage de l'utilisation de cette méthode est de travailler avec des valeurs supérieures à 1 000 $. Les autres réponses ne tiennent pas compte de ce format de nombre, et vous vous retrouvez avec des prix incorrects qui s'affichent au début. J'aimerais pouvoir vous donner 1000 votes
positifs
1
@circlesix merci beaucoup, très apprécié.
dchayka
Alors qu'est-ce que cela Magento\Directory\Model\Currencyfait 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?
Erfan
1
@Erfan la façon dont je le vois Currencydans 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.
dchayka
13
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)
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 .
C'est le moyen le plus rapide, si vous ne voulez pas construire un module séparé, juste pour implémenter currencyInterface dans la classe Template de Magento.
Daan van den Bergh
Comme j'ai besoin d'utiliser le même formateur à plusieurs endroits sur le phtml, que puis-je utiliser au lieu de $this->quand j'appelle votre suggestion à l'intérieur d'une fonction
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)
la source
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
. Fonctionneformat()
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 videarray()
si vous voulez que la devise du magasin soit ajoutée à votre montant.la source
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
Item.php (Classe de bloc du modèle ci-dessus ... quel qu'il soit)
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é!
la source
Vous pouvez l'obtenir en suivant le chemin dans le fichier de vue (.phtml).
la source
currency($value, $format = true, $includeContainer = true)
$this->
quand j'appelle votre suggestion à l'intérieur d'une fonctionUtilisation de l'aide à la tarification
Cela génère un prix et un symbole monétaire d'un produit donné.
la source