magento2에서 숫자를 통화 형식으로 변환하는 방법


21

Magento 1.x에서와 같이 magento2에서 숫자를 통화 형식으로 변환하고 싶습니다.

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

Magento2에서 동일한 작업을 수행하는 방법은 무엇입니까?


bit.ly/2MKg1L4 는 링크를 사용하여 잘 작동
Rakesh Jesadiya

답변:


38

magento 2에는 'core'모듈이 없습니다. 뷰 파일 (.phtml) 내부에서 다음과 같은 방법으로 얻을 수 있습니다

$ this-> 도우미 ( 'Magento \ Framework \ Pricing \ Helper \ Data')-> 통화 (number_format (50,2), true, false);

가격에 통화 기호를 원한다면 어떻게해야합니까? currency()메소드는 현재 범위 통화를 사용하여 변환합니다.
MagePsycho

1
number_format은 천 단위 구분 기호를 추가하여 점이 천 단위 구분 기호 인 유럽 시스템에서 문제를 일으 킵니다. 예를 들어 EUR 12000의 가격은 € 12,00을 반환합니다. 다음을 제거하고 number_format()금액을 전달하십시오.$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
Jacques

이것은 가장 높은 표를 얻은 것으로 가장 좋은 대답은 아니며 받아 들여진 것입니다. 더 나은 approuch는 dchayka의 답변입니다 : magento.stackexchange.com/a/148082/5827
Akif

궁금한 분들을 위해 서명은currency($value, $format = true, $includeContainer = true)
Collin Anderson

16

우선 뷰 (.phtml) 파일 내에서 통화 형식을 지정하지 말고 도우미 또는 블록 또는 두 가지 조합을 사용하십시오.

허용 된 답변은 number_format전혀 사용해서는 안되는 기능을 사용 합니다. 적어도 나는 그 접근법을 사용하지 않을 것입니다.

모델을 사용해보십시오.

유형의 모델 Magento\Directory\Model\Currency. format()소수점 이하 자릿수와 서식을 담당하는 기능 입니다.

변수를 가정 $model하고 $product인스턴스화 한 예 :

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

$금액 옆에 달러 없이 서식을 지정할 경우 소수점 이하 2 자리 입니다. array()상점 통화를 금액에 추가하려면 비워 두십시오.


이 방법을 사용하는 또 다른 이점은 $ 1000 이상의 값으로 작업하는 것입니다. 다른 답변은이 숫자 형식을 염두에 두지 않으며 프런트 엔드에 잘못된 가격이 표시됩니다. 나는 당신에게 1000 투표를 줄 수 있기를 바랍니다
circleix

1
@circlesix 많은 감사합니다.
dchayka

그래서 무엇을 Magento\Directory\Model\Currency해야하며 왜 사용해야합니까? 현재 상점보기 통화 구성 또는 고객이 선택한 통화를 봅니까?
Erfan

1
@Erfan Currency디렉토리 모듈에서 모델을 보는 방식 은 최종 가격 값을 조작하는 도우미와 같습니다. Framework의 도우미 예제에서는 가격을 상점의 올바른 통화로 변환 할 수 있지만 금액의 정밀도를 제어 할 수 없으며 가격을 사용자 정의하기 위해 클래스를 확장해야합니다. 화폐는 최종 금액을 예상하는 것과 반대이지만 서식, 소수 자릿수 등을 사용자 정의 할 수 있습니다.
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) 내부에서 다음과 같은 방법으로 얻을 수 있습니다.

$ price = 5.5;
$ this-> 도우미 ( 'Magento \ Framework \ Pricing \ Helper \ Data')-> 통화 ($ price, true, false);

궁금한 분들을 위해 서명은currency($value, $format = true, $includeContainer = true)
Collin Anderson


별도의 모듈을 만들고 싶지 않다면 Magento의 Template 클래스에 currencyInterface를 구현하는 것이 가장 빠른 방법입니다.
Daan van den Bergh

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

주어진 제품에서 가격과 통화 기호를 출력합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.