Ich habe nach der Installation von Magento 2.0.4 ein sehr seltsames Problem. Ich habe ein Produkt mit dem Preis von $ 12 erstellt und das Gebietsschema aus der Magento-Konfiguration im Backend geändert.
Unten ist der Screenshot für die Listingseite.
Finden Sie auch den folgenden Screenshot für die Detailseite.
Möglicherweise haben Sie den Unterschied zwischen zwei Screenshots bemerkt. Ja, auf der Produktdetailseite wird ein Preis von 0,00 USD angezeigt, während die Listingseite den von mir hinzugefügten Preis beibehält.
Die Produktdetailseite aktualisiert den korrekten Preis automatisch auf 0,00 €. Nach ein oder zwei Sekunden (Javascript-Updates).
Finden Sie den folgenden Code dafür
$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
Ich habe weiter im Code debuggt und finde einen anderen Javascript-Code, der Parameter an das Magento 2-Preisbox-Widget übergibt.
<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>
Jetzt habe ich die Methode getJsonConfig () überprüft,
$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
];
Ich habe viel durch den Code debuggt und bin zu dem Schluss gekommen, dass sie ICUDATA für die Unterstützung des Gebietsschemas verwenden.
Ich bin mit dieser ganzen Sache fest, es scheint, dass es PriceFormat Ausgabe ist.
Stellen Sie sicher, dass dieses Problem nur bei bestimmten Gebietsschemaoptionen wie Persion (Iran) auftritt.
quelle
Antworten:
Dieses Problem wurde behoben. Bitte aktualisieren Sie Magento2 auf die neueste Stable-Version
Wenn Sie von GIT & Composer installiert haben, gehen Sie folgendermaßen vor:
bin/magento setup:upgrade
)andernfalls, wenn Sie die Installation mit dem ZIP-Ordner-Download durchgeführt haben, laden Sie die neueste Version von der Magento-Website herunter und überschreiben Sie alle Dateien mit der neuen ZIP-Datei, bevor Sie den Cache leeren und ausführen müssen
quelle
Aktualisieren Sie das Magento mit den folgenden Befehlen.
quelle
Bitte versuchen Sie, den folgenden Code zu aktualisieren:
Pfad -
lib/internal/Magento/Framework/Locale/Format.php
hoffe seine Arbeit für Sie.
quelle