我今天在搜索如何获取格式化价格,那里的帖子告诉我使用ObjectManager。这是一个可怕的主意!因此,这是正确的方法。
如果您需要获取格式化的价格,则最好将Magento 2中附带的货币添加为您自己的类的依赖项,以实现此目的的最佳方法。我们需要添加为依赖项的类是:Magento\Framework\Pricing\Helper\Data
该助手类有两种使用方法。该currency
方法或currencyByStore
方法。该currency
方法将使用当前商店范围的货币。currencyByStore
默认情况下以相同的方式工作,但是具有第二个可选参数来定义哪个商店。
方法签名:
currency($value, $format = true, $includeContainer = true)
currencyByStore($value, $store = null, $format = true, $includeContainer = true)
提示:将$includeContainer
参数值设置 为false
会删除包含html的内容,您将只获得价格及其货币。
我们将其作为参数传递给__construct
,然后将实例设置为类的受保护属性。请参阅以下示例:
<?php
namespace Namespace\Module\Model;
class MyClass {
protected $pricingHelper;
public function __construct(Magento\Framework\Pricing\Helper\Data $pricingHelper)
{
$this->pricingHelper = $pricingHelper
}
public function getFormattedPrice($price, $format = true, $includeContainer = true)
{
return $this->pricingHelper->currency($price, $format, $includeContainer);
}
}
您可能遇到过ObjectManager示例。这些是不良的做法。总是做额外的工作以正确地注入您的类,不要偷懒!从长远来看,依赖关系注入系统会更好,因为您的依赖关系已明确。