Je suis confronté à un problème très étrange après l'installation de Magento 2.0.4. J'ai créé un produit au prix de 12 $ et modifié les paramètres régionaux de la configuration Magento dans le backend.
Voici la capture d'écran de la page de liste.
Retrouvez également la capture d'écran ci-dessous pour la page de détails.
Vous avez peut-être remarqué la différence entre deux captures d'écran. Oui, la page de détail du produit affiche un prix de 0,00 $ tandis que la page de liste a conservé le prix que j'ai ajouté.
La page de détails du produit met automatiquement à jour le prix correct à 0,00 $ après une ou deux secondes (mises à jour Javascript).
Trouvez le code ci-dessous
$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
J'ai débogué plus loin dans le code et trouvé un autre code javascript qui transmet les paramètres au widget de boîte de prix Magento 2.
<script>
require([
'jquery',
'Magento_Catalog/js/price-box'
], function($){
var priceBoxes = $('[data-role=priceBox]');
priceBoxes = priceBoxes.filter(function(index, elem){
return !$(elem).find('.price-from').length;
});
priceBoxes.priceBox({'priceConfig': <?php /* @escapeNotVerified */ echo $block->getJsonConfig() ?>});
});
</script>
Maintenant, j'ai vérifié la méthode getJsonConfig (),
$product = $this->getProduct();
if (!$this->hasOptions()) {
$config = [
'productId' => $product->getId(),
'priceFormat' => $this->_localeFormat->getPriceFormat()
];
return $this->_jsonEncoder->encode($config);
}
$tierPrices = [];
$tierPricesList = $product->getPriceInfo()->getPrice('tier_price')->getTierPriceList();
foreach ($tierPricesList as $tierPrice) {
$tierPrices[] = $this->priceCurrency->convert($tierPrice['price']->getValue());
}
$config = [
'productId' => $product->getId(),
'priceFormat' => $this->_localeFormat->getPriceFormat(),
'prices' => [
'oldPrice' => [
'amount' => $this->priceCurrency->convert(
$product->getPriceInfo()->getPrice('regular_price')->getAmount()->getValue()
),
'adjustments' => []
],
'basePrice' => [
'amount' => $this->priceCurrency->convert(
$product->getPriceInfo()->getPrice('final_price')->getAmount()->getBaseAmount()
),
'adjustments' => []
],
'finalPrice' => [
'amount' => $this->priceCurrency->convert(
$product->getPriceInfo()->getPrice('final_price')->getAmount()->getValue()
),
'adjustments' => []
]
],
'idSuffix' => '_clone',
'tierPrices' => $tierPrices
];
J'ai fait beaucoup de débogage à travers le code et suis arrivé à la conclusion qu'ils utilisent ICUDATA pour le support local.
Je suis coincé avec tout cela, il semble que ce soit un problème de PriceFormat.
Veuillez vous assurer que ce problème ne se pose que pour certaines options de paramètres régionaux comme Persion (Iran).