Sto affrontando un problema molto strano dopo l'installazione di Magento 2.0.4. Ho creato un prodotto con un prezzo di $ 12 e ho modificato le impostazioni locali dalla configurazione di Magento nel backend.
Di seguito è riportato lo screenshot per la pagina di elenco.
Trova anche lo screenshot seguente per la pagina dei dettagli.
Potresti aver notato la differenza tra due screenshot. Sì, la pagina dei dettagli del prodotto mostra il prezzo di $ 0,00 mentre la pagina dell'elenco ha mantenuto il prezzo che ho aggiunto.
La pagina dei dettagli del prodotto aggiorna automaticamente il prezzo corretto a $ 0,00 Dopo uno o due secondi (Aggiornamenti Javascript).
Trova il codice qui sotto per esso
$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
Ho eseguito il debug ulteriormente nel codice e ho trovato un altro codice javascript che passa i parametri al widget del box prezzi 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>
Ora ho verificato il metodo 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
];
Ho fatto molto il debug attraverso il codice e sono giunto alla conclusione che stanno usando ICUDATA per il supporto locale.
Sono bloccato con tutto questo, sembra che sia il problema di PriceFormat.
Assicurati che questo problema si presenti solo per alcune opzioni locali come Persion (Iran).