Product Unit Formatting
Format Source
Product Unit formats may be found in messages.<locale>.yml
.
Here is an example of format configuration for en_US:
product_unit.kg:
label:
full: kilogramm
short: kg
value:
full: '{0} none|{1} one kilogram|]1,Inf] %count% kilograms'
short: '{0} none|{1} one kg|]1,Inf] %count% kg'
Possible format placeholders:
count - product unit value
PHP Product Unit Value Formatter
Class: Oro\Bundle\ProductBundle\Formatter\UnitValueFormatter
Service id: oro_product.formatter.unit_value
Formats product unit value based on the given product unit.
Methods and Examples of Usage
format
string public format*(float|integer *value, ProductUnit unit)
This method can be used to format the value that is of float or integer type.
To format value, unit parameter must be passed and it must be instance of ProductUnit class.
Format:
product_unit.kg:
label:
full: kilogramm
short: kg
value:
full: '{0} none|{1} one kilogram|]1,Inf] %count% kilograms'
short: '{0} none|{1} one kg|]1,Inf] %count% kg'
Code:
// $unit implements ProductUnit
$unit->setCode('kg');
$formatter = $this->container->get('oro_product.formatter.unit_value');
echo $formatter->format(5, $unit);
Outputs:
5 kilograms
formatShort
string public formatShort*(float|integer *value, ProductUnit unit)
This method can be used to format a value that is of float or integer type.
To format value, unit parameters must be passed and it must be instance of ProductUnit class.
Format:
product_unit.kg:
label:
full: kilogram
short: kg
value:
full: '{0} none|{1} one kilogram|]1,Inf] %count% kilograms'
short: '{0} none|{1} one kg|]1,Inf] %count% kg'
Code:
// $unit implements ProductUnit
$unit->setCode('kg');
$formatter = $this->container->get('oro_product.formatter.unit_value');
echo $formatter->formatShort(5, $unit);
Outputs:
5 kg
formatCode
string public formatCode*(float|integer *value, string unitCode, bool isShort = false)
This method can be used to format a value that is of float or integer type, in full or short form, based on specified the product unit code.
Format:
product_unit.kg:
label:
full: kilogram
short: kg
value:
full: '{0} none|{1} one kilogram|]1,Inf] %count% kilograms'
short: '{0} none|{1} one kg|]1,Inf] %count% kg'
Code:
$formatter = $this->container->get('oro_product.formatter.unit_value');
echo $formatter->formatCode(5, 'kg');
Outputs:
5 kilograms
Twig
Filters
oro_format_product_unit_value
This filter uses the format method from the product unit value formatter, and has the same logic.
{{ value|oro_format_product_unit_value(unit) }}
oro_format_short_product_unit_value
This filter uses the formatShort method from the product unit value formatter, and has the same logic.
{{ value|oro_format_short_product_unit_value(unit) }}
oro_format_product_unit_code
This filter uses the formatCode method from the product unit value formatter, and has the same logic.
{{ value|oro_format_product_unit_code(unitCode, isShort) }}
oro_format_product_unit_label
This filter uses the format method from the product unit label formatter, and has the same logic.
{{ value|oro_format_product_unit_label(code) }}
oro_format_short_product_unit_label
This filter is an alias of oro_format_product_unit_label with pre-specified argument isShort set to true.
{{ value|oro_format_short_product_unit_label(code) }}
PHP Product Unit Label Formatter
Class: Oro\Bundle\ProductBundle\Formatter\UnitLabelFormatter
Service id: oro_product.formatter.unit_label
Formats product unit label.
Methods and Examples of Usage
format
string public format*(string *code, bool isShort = false, bool isPlural = false)
This method can be used to format product unit label in either full or short form, and in single or plural form.
Code:
$formatter = $this->container->get('oro_product.formatter.unit_label');
echo $formatter->format('item', false, true);
Outputs:
items
formatChoices
string public formatChoices*(array *units, bool isShort = false, bool isPlural = false)
This method can be used to get the choices array of product units codes and corresponding labels out of ProductUnit objects. You can can choose either full or short form, and single or plural form.
Code:
// $unitKg implements ProductUnit
$unitKg->setCode('kg');
// $unitItem implements ProductUnit
$unitItem->setCode('item');
$formatter = $this->container->get('oro_product.formatter.unit_label');
var_dump($formatter->formatChoices([$unitKg, $unitItem], false, true));
Outputs:
array(2) {
'kg' => string(9) "kilograms",
'item' => string(5) "items",
}