Я хочу отбросить бессмысленные десятичные цифры, например:
14.50 => 14.5
14.0500 => 14.05
14.000 => 14
Я искал, как это сделать, и нашел следующий путь:
{{ number|trim('0')|trim('.') }}
Но единственная проблема с вышеуказанным фильтром — это следующий случай:
0.023 => 023
Кто-нибудь знает, как мне этого добиться?
Вы нигде не упоминаете об этом, но я предполагаю, что ваши «числовые» переменные на самом деле являются строками, в противном случае поведение по умолчанию будет на самом деле тем, что вы ожидаете …
Мое предложение просто бросить эти string
переменные в float
переменные где-то в вашем PHP-коде, и Twig отобразит их так, как вы ожидаете.
Тем не менее, если вы действительно Нужно сделать это в Twig, вы можете автоматически приводить свои строки к числам, выполняя любые арифметические операции над ними. Смотрите следующий пример:
{% set stringNumber = '14.0500' %}
{% set number = 14.0500 %}
{{ stringNumber }} {# Prints 14.0500 #}
{{ number }} {# Prints 14.05 #}
{{ stringNumber + 0 }} {# Prints 14.05 #}
Полный пример здесь: https://twigfiddle.com/hwl82b
Вы можете написать свой собственный фильтр ветки, чтобы справиться с этим.
Взгляни на как создать свое собственное расширение ветки.
В вашем случае фильтр должен выглядеть примерно так:
class NumberExtension extends \Twig_Extension
{
public function getFilters()
{
return [
new \Twig_SimpleFilter('trim_number', [$this, 'trimNumber'])
];
}
/**
* @param $number
* @return int
*/
public function trimNumber($number)
{
if($number < 1){
return 0;
}
return trim($number, '\.0');
}
}
И вы можете использовать фильтр следующим образом:
{{ number | trim_number }}