Magento2 এ কীভাবে মুদ্রার বিন্যাসে নম্বর রূপান্তর করবেন


21

আমি ম্যাজেন্টো ২ তে মুদ্রা বিন্যাসে রূপান্তর করতে চাই যেমন আমরা এর সাথে ম্যাজেন্টো 1.x তে করি

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

Magento2 এ কীভাবে করবেন?


bit.ly/2MKg1L4 লিঙ্কটি ব্যবহার করে সূক্ষ্মভাবে কাজ করে
রাকেশ জেসাদিয়া

উত্তর:


38

ম্যাজেন্টো 2-তে কোনও 'কোর' মডিউল নেই। ভিউ ফাইলের (। Phtml) ভিতরে প্রবেশ করে আপনি এটি পেতে পারেন

$ This-> সাহায্যকারী ( 'Magento \ ফ্রেমওয়ার্ক \ প্রাইসিং \ সাহায্যকারী \ ডেটা') -> কারেন্সি (number_format (50,2), সত্য, মিথ্যা);

আপনি যদি কেবল মূল্যতে মুদ্রা প্রতীক চান? currency()পদ্ধতি রূপান্তর করতে বর্তমান স্কোপ মুদ্রা ব্যবহার করবে।
ম্যাজপাইকো

1
এটি 1000 টিরও বেশি দামের জন্য কাজ করে না The সংখ্যা_ ফর্ম্যাটটি হাজার হাজার বিভাজক যুক্ত করে, যা ইউরোপীয় সিস্টেমগুলিতে সমস্যা সৃষ্টি করে যেখানে পয়েন্টটি হাজার বিভাজক। উদাহরণস্বরূপ EUR 12000 এর একটি মূল্য ফেরত দেয় € 12,00 যা ভুল। তারপরে আপনাকে number_format()$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
জ্যাকস

এটি অবশ্যই সবচেয়ে ভাল উত্তর নয় তবে এটি সর্বোচ্চ এবং গ্রহণযোগ্য কোনওটিই ভোট দেওয়া হয়। ভাল অ্যাচার্চটি chayচাইকের জবাব: magento.stackexchange.com/a/148082/5827
আকিফ

যারা ভাবছেন তাদের স্বাক্ষরটি হ'লcurrency($value, $format = true, $includeContainer = true)
কলিন অ্যান্ডারসন

16

সবার আগে আপনার ভিউ (.phtml) ফাইলের ভিতরে মুদ্রা বিন্যাস করবেন না, সাহায্যকারী বা ব্লক বা উভয়ের সংমিশ্রণটি ব্যবহার করুন।

স্বীকৃত উত্তরটি এমন number_formatফাংশন ব্যবহার করে যা মোটেও ব্যবহার করা উচিত নয়, কমপক্ষে আমি সেই পদ্ধতির সাথে যাব না।

আপনি একটি মডেল ব্যবহার করে দেখতে পারেন:

মডেল টাইপ Magento\Directory\Model\Currency। ফাংশন format()এটা যেমন এক দশমিক স্থান এবং বিন্যাস জন্য দায়ী।

ভেরিয়েবল ধরে নেওয়া উদাহরণ $modelএবং $productতাত্ক্ষণিকভাবে করা হয়েছে:

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

$পরিমাণের পাশে ডলার ছাড়াই বিন্যাসের জন্য 2 দশমিক স্থান । array()আপনি যদি আপনার পরিমাণে স্টোর মুদ্রা যুক্ত করতে চান তবে খালি পাস করুন ।


এই পদ্ধতিটি ব্যবহারের আরেকটি সুবিধা হ'ল 1000 ডলারের বেশি মানের সাথে কাজ করছে। অন্যান্য উত্তরগুলি এই সংখ্যার ফর্ম্যাটটিকে মনে রাখে না এবং আপনি শেষের দিকে ভুল দামগুলি দেখিয়ে শেষ করেন। আমি আশা করি আমি আপনাকে 1,000 টি ভোট দিতে পারব
17:37

1
@ সাইক্লিক্সিক্স অনেক ধন্যবাদ, অনেক প্রশংসা করা।
chayচাইকা

সুতরাং কী করে Magento\Directory\Model\Currencyএবং কেন এটি ব্যবহার করা উচিত? এটি কি বর্তমান স্টোরভিউ মুদ্রার কনফিগারেশন বা গ্রাহক দ্বারা নির্বাচিত মুদ্রার দিকে নজর দিচ্ছে?
এরফান

1
Currencyডিরেক্টরী মডিউলে যেভাবে আমি এটি মডেল দেখছি @ এরফান চূড়ান্ত মূল্যের মানটি হস্তান্তর করার জন্য সহায়ক like ফ্রেমওয়ার্কের সহায়তার উদাহরণে আপনি দামটিকে দোকানের সঠিক মুদ্রায় রূপান্তর করতে সক্ষম হবেন তবে এই পরিমাণের যথাযথতার উপর আপনার কোনও নিয়ন্ত্রণ নেই এবং এটি কাস্টমাইজ করার জন্য ক্লাসগুলি প্রসারিত করতে হবে। মুদ্রা বিপরীত যেখানে এটি চূড়ান্ত রাশি আশা কিন্তু আপনি ফর্ম্যাটিং কাস্টমাইজ করতে পারবেন, দশমিক নির্ভুলতা, ইত্যাদি হয়
dchayka

13

আপনি যা করতে চান তা হ'ল যে আপনি এটি ব্যবহার করতে চান সেই টেম্পলেট ফাইলটির ব্লকের " প্রাইস কারঙ্কেন্সি ইন্টারফেস " ইনজেক্ট করা।

template.phtml

<div><?= $block->getFormatedPrice('342.4345') ?>

আইটেম.এফপি (উপরের টেমপ্লেটের ব্লক ক্লাস ... যাই হোক না কেন)

<?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)
কলিন অ্যান্ডারসন


এটি কেবল দ্রুত উপায়, যদি আপনি কেবলমাত্র ম্যাগেন্তোর টেম্পলেট-শ্রেণিতে কারেন্সি ইন্টারফেস বাস্তবায়নের জন্য একটি পৃথক মডিউল তৈরি করতে না চান।
দান ভ্যান ডেন বার্গ

যেহেতু আমার পিএইচটিএমএল একাধিক জায়গায় একই ফর্ম্যাটারটি ব্যবহার করা দরকার, $this->আমি কোনও ফাংশনের অভ্যন্তরে আপনার পরামর্শটি বললে তার পরিবর্তে আমি কী ব্যবহার করতে পারি
ব্র্যাডেভ

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

এটি প্রদত্ত পণ্য থেকে মূল্য এবং মুদ্রার প্রতীককে আউটপুট করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.