commerce_api-8.x-1.x-dev/src/Plugin/DataType/FormattedPrice.php
src/Plugin/DataType/FormattedPrice.php
<?php
namespace Drupal\commerce_api\Plugin\DataType;
use CommerceGuys\Intl\Exception\InvalidArgumentException;
use Drupal\commerce_price\Plugin\Field\FieldType\PriceItem;
use Drupal\Core\TypedData\Plugin\DataType\StringData;
/**
* Swapped FormattedPrice class to support non-field parents.
*
* @see \Drupal\commerce_price\Plugin\DataType\FormattedPrice
*/
class FormattedPrice extends StringData {
/**
* {@inheritdoc}
*/
public function getValue() {
$formatted_price = NULL;
$parent = $this->getParent();
if (($parent instanceof PriceItem) && !$parent->isEmpty()) {
$price = $parent->toPrice();
$values = [
'number' => $price->getNumber(),
'currency_code' => $price->getCurrencyCode(),
];
}
elseif ($parent instanceof Price) {
if ($parent->isEmpty()) {
return NULL;
}
$values = [
'number' => $parent->get('number')->getValue(),
'currency_code' => $parent->get('currency_code')->getValue(),
];
}
else {
return NULL;
}
try {
$currency_formatter = \Drupal::service('commerce_price.currency_formatter');
return $currency_formatter->format($values['number'], $values['currency_code']);
}
catch (InvalidArgumentException $e) {
return NULL;
}
}
}
