ฉันต้องการแปลงตัวเลขเป็นรูปแบบสกุลเงินใน magento2 เหมือนที่เราทำใน Magento 1.x ด้วยสิ่งนี้
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
ทำอย่างไรใน Magento2
ฉันต้องการแปลงตัวเลขเป็นรูปแบบสกุลเงินใน magento2 เหมือนที่เราทำใน Magento 1.x ด้วยสิ่งนี้
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
ทำอย่างไรใน Magento2
คำตอบ:
ใน magento 2 ไม่มีโมดูล 'core' คุณสามารถรับสิ่งนี้ได้ด้วยวิธีต่อไปนี้ภายในไฟล์มุมมอง (.phtml)
$ this-> ผู้ช่วย (วีโอไอพี \ Framework \ ราคา \ Helper \ Data) -> สกุลเงิน (number_format (50,2) จริงเท็จ);
currency()
วิธีการจะใช้สกุลเงินขอบเขตปัจจุบันในการแปลง
number_format()
และเพียงแค่ผ่านจำนวนเงินที่:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
ก่อนอื่นไม่ทำการจัดรูปแบบสกุลเงินในไฟล์มุมมอง (.phtml) ใช้ตัวช่วยหรือบล็อกหรือทั้งสองอย่างร่วมกัน
คำตอบที่ได้รับการยอมรับใช้number_format
ฟังก์ชั่นที่ไม่ควรใช้เลยอย่างน้อยฉันก็ไม่ได้ใช้วิธีการนั้น
คุณสามารถลองใช้แบบจำลอง:
Magento\Directory\Model\Currency
รูปแบบของประเภท ทำหน้าที่format()
เหมือนเป็นหน้าที่รับผิดชอบในการวางตำแหน่งทศนิยมและการจัดรูปแบบ
ตัวอย่างสมมติว่ามีตัวแปร$model
และ$product
ได้รับอินสแตนซ์:
$model->format($product->getPrice(), array('symbol' => ''), false, false)
ทศนิยม 2 ตำแหน่งสำหรับการจัดรูปแบบโดยไม่ต้อง$
ดอลลาร์ถัดจากจำนวนเงิน ผ่านว่างเปล่าarray()
ถ้าคุณต้องการให้สกุลเงินของร้านค้าผนวกกับจำนวนเงินของคุณ
Magento\Directory\Model\Currency
ทำอย่างไรและทำไมจึงควรใช้? มันดูที่การกำหนดค่าสกุลเงินของมุมมองร้านค้าในปัจจุบันหรือสกุลเงินที่เลือกโดยลูกค้า?
Currency
รูปแบบในโมดูล Directory เป็นเหมือนผู้ช่วยในการจัดการมูลค่าราคาสุดท้าย ในตัวอย่างของผู้ช่วยเหลือจาก Framework คุณจะสามารถแปลงราคาเป็นสกุลเงินที่ถูกต้องของร้านค้า แต่คุณไม่สามารถควบคุมจำนวนเงินได้อย่างแม่นยำและจะต้องขยายคลาสเพื่อให้ได้รับการปรับแต่ง สกุลเงินตรงข้ามกับที่คาดว่าจะเป็นจำนวนเงินขั้นสุดท้าย แต่ช่วยให้คุณสามารถกำหนดรูปแบบความแม่นยำทศนิยม ฯลฯ
สิ่งที่คุณต้องการทำคือการฉีด " PriceCurrencyInterface " ในบล็อกของไฟล์เทมเพลตที่คุณต้องการใช้
template.phtml
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (บล็อคคลาสของเทมเพลตด้านบน ... ไม่ว่ามันจะเป็นอะไร)
<?php
namespace \Whatever
use Magento\Framework\Pricing\PriceCurrencyInterface;
use Magento\Framework\View\Element\Template;
class Item extends Template
{
/** @var PriceCurrencyInterface $priceCurrency */
protected $priceCurrency;
public function __construct(
Template\Context $context,
PriceCurrencyInterface $priceCurrency,
array $data = []
) {
parent::__construct($context, $data);
$this->priceCurrency = $priceCurrency;
}
/**
* Function getFormatedPrice
*
* @param float $price
*
* @return string
*/
public function getFormatedPrice($amount)
{
return $this->priceCurrency->convertAndFormat($amount);
}
สิ่งนี้มีประโยชน์เพิ่มเติมในการแสดงรูปแบบที่ถูกต้องตามสถานที่เก็บปัจจุบัน นอกจากนี้ยังมีวิธีการอื่น ๆ ที่อาจเป็นประโยชน์ลองดู ...
ตรวจสอบให้แน่ใจว่าได้ตรวจสอบลายเซ็นเมธอดเนื่องจากคุณสามารถกำหนดค่าผลลัพธ์ที่คุณต้องการแสดงเช่นคอนเทนเนอร์และแม่นยำ
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
ไชโย!
คุณสามารถรับสิ่งนี้ได้ด้วยวิธีดังต่อไปนี้ในไฟล์มุมมอง (.phtml)
$ price = 5.5; $ this-> ผู้ช่วย (วีโอไอพี \ Framework \ ราคา \ Helper \ Data) -> สกุลเงิน ($ ราคาจริงเท็จ);
currency($value, $format = true, $includeContainer = true)
$this->
เรียกคำแนะนำของคุณภายในฟังก์ชั่น
การใช้เครื่องมือช่วยกำหนดราคา
<?php
namespace \Vendor\Module
class MyClass extends Template
{
public $priceHelper;
public function __construct(
Template\Context $context,
\Magento\Framework\Pricing\Helper\Data $priceHelper,
array $data = []
) {
parent::__construct($context, $data);
$this->priceHelper = $priceHelper;
}
public function myCustomFunction($product) {
return $this->priceHelper->currency($product->getPrice(),true,false);
}
}
สิ่งนี้จะแสดงราคาและสัญลักษณ์สกุลเงินจากผลิตภัณฑ์ที่กำหนด