Magento 2 - Зміна ціни на продукт на 0,00 в детальній сторінці деталей продукту для Інтернету без США


14

Я стикаюся з дуже дивним питанням після установки Magento 2.0.4. Я створив продукт за ціною 12 доларів і змінив локаль із конфігурації Magento в сервісному режимі.

Нижче - скріншот для сторінки з переліком.

введіть тут опис зображення

Також знайдіть скріншот нижче для детальної сторінки.

введіть тут опис зображення

Можливо, ви помітили різницю між двома скріншотами. Так, на сторінці детальної інформації про товар відображається ціна 0,00 доларів, а сторінка з переліком зберігає ціну, яку я додав.

Сторінка деталей продукту автоматично оновлює правильну ціну до 0,00 доларів через одну-дві секунди (оновлення Javascript).

Знайдіть код нижче для цього

$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));

Я надалі налагоджую код у коді та знаходжу ще один код JavaScript, який передає параметр у віджет 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>

Тепер я перевірив метод 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
        ];

Я робив багато налагоджень через код і прийшов до висновку, що вони використовують ICUDATA для підтримки локалів.

Я застряг у цьому всьому, здається, це проблема PriceFormat.

Будь ласка, переконайтеся, що ця проблема виникає лише для певних варіантів локальної служби, таких як Persion (Іран).


Застосуйте reindeix, очистіть кеш, розгорніть статичний конент.
Суреш Чікані

Дякуємо @SHPatel, це не проблема перевстановлення чи кешування. я зробив усе можливе.
Codrain Technolabs Pvt Ltd

Про помилку це повідомлялося раніше команді magento. Перевірте це для більш детальної інформації - github.com/magento/magento2/isissue/4077
Парех

Дякую @ReenaParekh, про цю помилку повідомив я. Але я хочу вирішити це питання, тому що люди Magento знадобиться час, щоб оновити його в наступному випуску або близько того.
Codrain Technolabs Pvt Ltd

Відповіді:


0

ця проблема була вирішена, будь ласка, оновіть свій Magento2 до останньої стабільної версії

якщо ви встановили з GIT & Composer, виконайте наступні дії:

  • Тоді ви повинні зафіксувати свої зміни
  • GIT PULL Останній стабільний відділення, тобто 2.1
  • Оновлення композитора
  • Оновити Magento ( bin/magento setup:upgrade)

інакше, якщо ви встановили за допомогою завантаження папки zip, ніж завантажуєте останні з веб-сайту magento, і заміняйте всі файли за допомогою нового zip, ніж вам потрібно очистити кеш і запустити

bin/magento setup:upgrade

0

Оновіть магенто, дотримуючись команд.

налаштування бін / магенто: оновлення

налаштування bin / magento: db-схема: оновлення

php -d memory_limit = -1 bin / magento setup: di: compile

php -d memory_limit = -1 bin / magento setup: статичний контент: розгорнути


0

Спробуйте оновити код нижче:

Шлях - lib/internal/Magento/Framework/Locale/Format.php

class Format implements \Magento\Framework\Locale\FormatInterface
{
    const DEFAULT_NUMBER_SET = 'latn';
    /**
     * @var \Magento\Framework\App\ScopeResolverInterface
     */
@@ -104,12 +105,18 @@ public function getPriceFormat($localeCode = null, $currencyCode = null)
            $currency = $this->_scopeResolver->getScope()->getCurrentCurrency();
        }
        $localeData = (new DataBundle())->get($localeCode);
        /* $format = $localeData['NumberElements']['latn']['patterns']['currencyFormat']
            ?: explode(';', $localeData['NumberPatterns'][1])[0];
        $decimalSymbol = $localeData['NumberElements']['latn']['symbols']['decimal']
            ?: $localeData['NumberElements'][0];
        $groupSymbol = $localeData['NumberElements']['latn']['symbols']['group']
            ?: $localeData['NumberElements'][1]; */
 //start updated code
        $defaultSet = $localeData['NumberElements']['default'] ?: self::DEFAULT_NUMBER_SET;
        $format = $localeData['NumberElements'][$defaultSet]['patterns']['currencyFormat']
            ?: ($localeData['NumberElements'][self::DEFAULT_NUMBER_SET]['patterns']['currencyFormat']
                ?: explode(';', $localeData['NumberPatterns'][1])[0]);
        $decimalSymbol = $localeData['NumberElements'][$defaultSet]['symbols']['decimal']
            ?: ($localeData['NumberElements'][self::DEFAULT_NUMBER_SET]['symbols']['decimal']
                ?: $localeData['NumberElements'][0]);
        $groupSymbol = $localeData['NumberElements'][$defaultSet]['symbols']['group']
            ?: ($localeData['NumberElements'][self::DEFAULT_NUMBER_SET]['symbols']['group']
                ?: $localeData['NumberElements'][1]);

  // end updated code

        $pos = strpos($format, ';');
        if ($pos !== false) {

сподіваємось, що це працює для вас.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.