class PriceTwigExtension in Price 2.x
Same name and namespace in other branches
- 8 src/TwigExtension/PriceTwigExtension.php \Drupal\price\TwigExtension\PriceTwigExtension
- 3.x src/TwigExtension/PriceTwigExtension.php \Drupal\price\TwigExtension\PriceTwigExtension
- 2.0.x src/TwigExtension/PriceTwigExtension.php \Drupal\price\TwigExtension\PriceTwigExtension
- 3.0.x src/TwigExtension/PriceTwigExtension.php \Drupal\price\TwigExtension\PriceTwigExtension
Provides Price-specific Twig extensions.
Hierarchy
- class \Drupal\price\TwigExtension\PriceTwigExtension extends \Twig\Extension\AbstractExtension
Expanded class hierarchy of PriceTwigExtension
1 string reference to 'PriceTwigExtension'
1 service uses PriceTwigExtension
File
- src/
TwigExtension/ PriceTwigExtension.php, line 12
Namespace
Drupal\price\TwigExtensionView source
class PriceTwigExtension extends AbstractExtension {
/**
* Returns array of registered filters.
*/
public function getFilters() {
return [
new TwigFilter('price_format', [
$this,
'formatPrice',
]),
];
}
/**
* Returns extension name.
*/
public function getName() {
return 'price.twig_extension';
}
/**
* Formats a price object/array.
*
* Examples:
* {{ order.getTotalPrice|price_format }}
* {{ order.getTotalPrice|price_format|default('N/A') }}
* {{ order.getTotalPrice|price_format({'minimum_fraction_digits': 0}) }}
* {{ order.getTotalPrice|price_format({'currency_display': 'code''}) }}
*
* @param mixed $price
* Either a Price object, or an array with number and currency_code keys.
* @param array $options
* (optional) An array of options to pass to the currency formatter.
*
* @return mixed
* A formatted price, suitable for rendering in a twig template.
*
* @throws \InvalidArgumentException
*/
public static function formatPrice($price, array $options = []) {
if (empty($price)) {
return '';
}
if ($price instanceof Price) {
$price = $price
->toArray();
}
if (is_array($price) && isset($price['currency_code']) && isset($price['number'])) {
$currency_formatter = \Drupal::service('price.currency_formatter');
return $currency_formatter
->format($price['number'], $price['currency_code'], $options);
}
else {
throw new \InvalidArgumentException('The "price_format" filter must be given a price object or an array with "number" and "currency_code" keys.');
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PriceTwigExtension:: |
public static | function | Formats a price object/array. | |
PriceTwigExtension:: |
public | function | Returns array of registered filters. | |
PriceTwigExtension:: |
public | function | Returns extension name. |