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).
la source
Réponses:
ce problème a été résolu, veuillez mettre à jour votre Magento2 vers la dernière version stable
si vous avez installé à partir de GIT & Composer, procédez comme suit:
bin/magento setup:upgrade
)sinon si vous avez installé en utilisant le téléchargement du dossier zip que le téléchargement le plus récent depuis le site Web de magento et remplacez tous les fichiers en utilisant le nouveau zip, vous devez vider le cache et exécuter
la source
Mettez à niveau le magento en suivant les commandes.
la source
Veuillez essayer de mettre à jour le code ci-dessous:
Chemin -
lib/internal/Magento/Framework/Locale/Format.php
j'espère que son travail pour vous.
la source