localeCurrency = $localeCurrency; $this->storeManager = $storeManager; parent::__construct($factoryElement, $factoryCollection, $escaper, $data); } /** * @return void */ protected function _construct() { parent::_construct(); } /** * @param mixed $attribute * @return \Magento\Store\Model\Store */ protected function getStore($attribute) { if (!($storeId = $attribute->getStoreId())) { $storeId = $this->getForm()->getDataObject()->getStoreId(); } $store = $this->storeManager->getStore($storeId); return $store; } /** * @param null|int|string $index * @return null|string * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function getEscapedValue($index = null) { $values = $this->getValue(); if (!is_array($values)) { return null; } foreach ($values as $key => $value) { $price = array_key_exists('price', $value) ? $value['price'] : $value['value']; try { if ($attribute = $this->getEntityAttribute()) { $store = $this->getStore($attribute); $currency = $this->localeCurrency->getCurrency($store->getBaseCurrencyCode()); $values[$key]['value'] = $currency->toCurrency($price, ['display' => Currency::NO_SYMBOL]); } else { // default format: 1234.56 $values[$key]['value'] = number_format($price, 2, null, ''); } } catch (\Exception $e) { $values[$key]['value'] = $price; } } return $values; } }