Magento 2: Как получить цену товара с символом валюты в файле PHTML с помощью блока


Из объекта $product я получаю коллекцию продуктов из блока и отображаю поля. Я хочу получить цену с помощью кода валюты, например $99.00 в списке продуктов.

Прямо сейчас я использую приведенный ниже код, чтобы получить цену товара, но мне нужно отобразить цену с символом валюты.

$product->getFinalPrice();
Author: Payal Patel, 2016-10-03

5 answers

Создайте объект блока abstractProduct, затем вызовите метод getProductPrice и передайте объект продукта в качестве параметра. смотреть ниже.

$abstractProductBlock = $block->getLayout()->createBlock('\Magento\Catalog\Block\Product\AbstractProduct');
echo $abstractProductBlock->getProductPrice($product);

Полный пример реализации:

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$abstractProductBlock = $block->getLayout()->createBlock('\Magento\Catalog\Block\Product\AbstractProduct');

$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
$collection = $productCollection->create()
            ->addAttributeToSelect('*')
            ->addAttributeToSort('created_at', 'DESC')
            ->setPageSize(8)
            ->load();
?>
<div>
    <?php foreach ($collection as $product) :?>
        <div class="item-box">
            <a href="<?php echo $product->getProductUrl(); ?>" >
                <span class="imgbx">
                    <img src="<?php echo $abstractProductBlock->getImage($product, 'latest_collection_list')->getImageUrl(); ?>" alt="<?php echo $product->getName(); ?>" />
                </span>
                <h3><?php echo $product->getName(); ?></h3>
                <span class="hm-price"><?php echo $abstractProductBlock->getProductPrice($product) ?></span>
            </a>
        </div>
    <?php endforeach;  ?>
</div>
?>
 5
Author: Arun Karnawat, 2016-10-03 10:20:17
// Instance of Object Manager

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 

// Instance of Pricing Helper

$priceHelper = $objectManager->create('Magento\Framework\Pricing\Helper\Data'); 

echo $priceHelper->currency($product->getFinalPrice(), true, false); 
 8
Author: Lasantha, 2018-10-18 10:23:30

Вы можете получить свой текущий символ валюты из Magento\Directory\Model\Currency , поэтому просто введите его в свою функцию построения и вызовите метод getCurrencySymbol() для получения текущего символа валюты:

$currencyCode = $this->_currency->getCurrencySymbol();
 1
Author: Yogesh Karodiya, 2016-10-03 09:59:55

В соответствии с этим

vendor/magento/module-catalog/view/frontend/templates/product/list/items.phtml

Вы можете просто использовать это, чтобы получить цену в валюте.

<?php echo $block->getProductPrice($product); ?>
 1
Author: AdrianS, 2017-03-22 16:20:57

На Magento 2 в моей пользовательской теме я просто использую это на странице продукта в файле phtml.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');    

$price = $product->getPrice();

Или это в любом другом файле phtml.

Разница в том, что в этом примере я получаю идентификатор продукта вместо текущего продукта.

В этом случае вы можете установить идентификатор, чтобы вывести желаемую цену товара. На примере я получаю идентификатор текущего продукта.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productid = $this->getRequest()->getParam('id');                                       
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($productid);

$price = $product->getPrice();

И я использую эту строку кода для форматирования цена.

До: 7.000 >>>> После: £7.00

$priceFormatted = $this->helper('Magento\Framework\Pricing\Helper\Data')->currency(number_format($product->getPrice(), 2), true, false);
 1
Author: Rafael Perozin, 2020-03-11 14:20:25