Me enfrento a un problema muy extraño después de la instalación de Magento 2.0.4. He creado un producto con el precio de $ 12 y cambio la configuración regional de la configuración de Magento en el back-end.
A continuación se muestra la captura de pantalla para la página de listado.
También encuentre la siguiente captura de pantalla para la página de detalles.
Es posible que haya notado la diferencia entre dos capturas de pantalla. Sí, la página de detalles del producto muestra un precio de $ 0.00 mientras que la página de listado retiene con el precio lo que he agregado.
La página de detalles del producto actualiza automáticamente el precio correcto a $ 0,00 después de uno o dos segundos (actualizaciones de Javascript).
Encuentra el siguiente código para ello
$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
He depurado más en el código y encuentro otro código javascript que pasa el parámetro al widget Magento 2 pricebox.
<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>
Ahora he comprobado el método 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
];
Hice mucha depuración a través del código y llegué a la conclusión de que están usando ICUDATA para soporte local.
Estoy atrapado con todo esto, parece que es un problema de PriceFormat.
Asegúrese de que este problema surja solo para ciertas opciones de configuración regional como Persion (Irán).
fuente
Respuestas:
este problema se ha resuelto, actualice amablemente su Magento2 a la última versión estable
si ha instalado desde GIT & Composer, siga estos pasos:
bin/magento setup:upgrade
)de lo contrario, si ha instalado usando la descarga de la carpeta zip, descargue la última versión del sitio web de magento y anule todos los archivos usando el nuevo zip que necesita para borrar el caché y ejecutar
fuente
Actualice el magento siguiendo los comandos.
fuente
Intenta actualizar el siguiente código:
Camino -
lib/internal/Magento/Framework/Locale/Format.php
Espero que funcione para ti.
fuente