Magento 2: Как получить цену товара с символом валюты в файле PHTML с помощью блока
Из объекта $product
я получаю коллекцию продуктов из блока и отображаю поля. Я хочу получить цену с помощью кода валюты, например
$99.00
в списке продуктов.
Прямо сейчас я использую приведенный ниже код, чтобы получить цену товара, но мне нужно отобразить цену с символом валюты.
$product->getFinalPrice();
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>
?>
// 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);
Вы можете получить свой текущий символ валюты из Magento\Directory\Model\Currency
, поэтому просто введите его в свою функцию построения и вызовите метод getCurrencySymbol()
для получения текущего символа валюты:
$currencyCode = $this->_currency->getCurrencySymbol();
В соответствии с этим
vendor/magento/module-catalog/view/frontend/templates/product/list/items.phtml
Вы можете просто использовать это, чтобы получить цену в валюте.
<?php echo $block->getProductPrice($product); ?>
На 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);