Magento2 में संख्या को मुद्रा प्रारूप में कैसे परिवर्तित करें


21

मैं Magento2 में संख्या को मुद्रा प्रारूप में बदलना चाहता हूं, जैसे हम इसके साथ Magento 1.x में करते हैं

$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)

Magento2 में समान कैसे करें?


bit.ly/2MKg1L4 लिंक का उपयोग करके ठीक काम करता है
राकेश जेसादिया

जवाबों:


38

Magento 2 में, कोई 'कोर' मॉड्यूल नहीं हैं। आप इसे दृश्य फ़ाइल (.phtml) के अंदर निम्न तरीके से प्राप्त कर सकते हैं

$ This-> सहायक ( 'Magento \ फ्रेमवर्क \ मूल्य निर्धारण \ हेल्पर \ डाटा') -> मुद्रा (number_format (50,2), सच है, झूठी);

क्या होगा अगर आप सिर्फ मूल्य के लिए मुद्रा प्रतीक चाहते हैं? currency()विधि में परिवर्तित करने के लिए वर्तमान गुंजाइश मुद्रा का उपयोग किया जाएगा।
MagePsycho

1
यह 1000 से अधिक की कीमतों के लिए काम नहीं करता है। नंबर_फॉर्मेट में हजारों विभाजक शामिल हैं, जो यूरोपीय प्रणालियों पर परेशानी का कारण बनता है जहां एक बिंदु एक हजार विभाजक है। उदाहरण के लिए EUR 12000 का मूल्य € 12,00 है जो गलत है। फिर आपको इसे हटाने number_format()और बस राशि को पास करने की आवश्यकता है:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
जैक्स

यह निश्चित रूप से सबसे अच्छा उत्तर नहीं है क्योंकि यह सबसे अधिक मतदान किया जाता है और स्वीकार किया जाता है। बेहतर approuch dchayka का उत्तर है: magento.stackexchange.com/a/148082/5827
Akif

आश्चर्य करने वालों के लिए, हस्ताक्षर हैcurrency($value, $format = true, $includeContainer = true)
कॉलिन एंडरसन

16

सबसे पहले अपने दृश्य (.phtml) फ़ाइलों के अंदर मुद्रा स्वरूपण न करें, सहायकों या ब्लॉकों या दोनों के संयोजन का उपयोग करें।

स्वीकृत उत्तर number_formatफ़ंक्शन का उपयोग करता है जिसका उपयोग बिल्कुल नहीं किया जाना चाहिए, कम से कम मैं उस दृष्टिकोण के साथ नहीं जाऊंगा।

आप एक मॉडल का उपयोग करके देख सकते हैं:

प्रकार का मॉडल Magento\Directory\Model\Currencyformat()यह दशमलव स्थानों और स्वरूपण के लिए जिम्मेदार के रूप में कार्य करता है।

उदाहरण मान चर $modelऔर $productतुरंत किया गया है:

$model->format($product->getPrice(), array('symbol' => ''), false, false)

$राशि के बिना डॉलर के प्रारूपण के लिए 2 दशमलव स्थान । array()यदि आप अपनी राशि से जुड़ी हुई मुद्रा जमा करना चाहते हैं तो खाली पास करें।


इस पद्धति का उपयोग करने का एक और लाभ $ 1000 से अधिक के मूल्यों के साथ काम करना है। अन्य उत्तर इस संख्या प्रारूप को ध्यान में नहीं रखते हैं, और आप गलत कीमतों के साथ सामने के छोर पर दिखाई देते हैं। काश मैं आपको 1,000 वोट दे सकता
सर्कसिक्स

1
@ circlesix बहुत बहुत धन्यवाद, बहुत सराहना की।
ढाका

तो क्या करता Magento\Directory\Model\Currencyहै, और इसका उपयोग क्यों किया जाना चाहिए? क्या यह मौजूदा स्टोरव्यू मुद्रा विन्यास, या ग्राहक द्वारा चुनी गई मुद्रा को देखता है?
इरफान

1
@ जिस तरह से मैं इसे Currencyनिर्देशिका मॉड्यूल में मॉडल देखता हूं वह अंतिम मूल्य मूल्य में हेरफेर करने के लिए सहायक की तरह है। फ्रेमवर्क से सहायक के उदाहरण में आप मूल्य को स्टोर की सही मुद्रा में बदलने में सक्षम होंगे, लेकिन आपके पास राशि की शुद्धता पर कोई नियंत्रण नहीं है और इसे अनुकूलित करने के लिए कक्षाओं का विस्तार करना होगा। मुद्रा विपरीत है जहां यह अंतिम राशि की उम्मीद करती है, लेकिन आपको प्रारूपण, दशमलव परिशुद्धता, आदि को अनुकूलित करने की अनुमति देती है
dchayka

13

आप क्या करना चाहते हैं " 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)

चीयर्स!


10

आप इसे दृश्य फ़ाइल (.phtml) के अंदर इस तरह से प्राप्त कर सकते हैं।

$ मूल्य = 5.5;
$ This-> सहायक ( 'Magento \ फ्रेमवर्क \ मूल्य निर्धारण \ हेल्पर \ डाटा') -> मुद्रा ($ मूल्य, सच है, झूठी);

सोच रहे लोगों के लिए, हस्ताक्षरcurrency($value, $format = true, $includeContainer = true)
कोलिन एंडरसन


यह सबसे तेज़ तरीका है, यदि आप अलग मॉड्यूल का निर्माण नहीं करना चाहते हैं, तो बस Magento के टेम्प्लेट-क्लास में करेंसी इनवर्टर लागू करें।
डैन वैन डेन बर्ग

जैसा कि मुझे phtml पर कई स्थानों पर एक ही फॉर्मेटर का उपयोग करने की आवश्यकता है, $this->जब मैं किसी फ़ंक्शन के अंदर आपके सुझाव को कॉल करने के बजाय क्या उपयोग कर सकता हूं
BraDev

1

मूल्य निर्धारण सहायक का उपयोग करना

<?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);
    }
}

यह किसी दिए गए उत्पाद से एक मूल्य और मुद्रा प्रतीक का उत्पादन करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.