ฉันต้องการแปลงตัวเลขเป็นรูปแบบสกุลเงินใน 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);
    }
}
สิ่งนี้จะแสดงราคาและสัญลักษณ์สกุลเงินจากผลิตภัณฑ์ที่กำหนด