функция sprintf в шаблоне катализатора Perl

Сейчас, когда я добавляю этот код

[%mortgage.amortization_period%]

он дает мне результат как 250000.00 Но мне нужно удалить оттуда десятичные точки. Иногда мне нужно удалить только 1 цифру после десятичной точки. Есть ли такая функция, как sprintf, которую я могу использовать в шаблоне Catalyst.


person Jitesh    schedule 03.06.2014    source источник


Ответы (2)


Конечно, функция типа sprintf - это sprintf. Вы можете помещать функции в тайник и вызывать их из TT, и если вы хотите, чтобы они были доступны все время, вы можете добавить их в TEMPLATE_VARS в вашем представлении.

person hobbs    schedule 03.06.2014
comment
можешь дать мне пример для этого? - person Jitesh; 03.06.2014
comment
в настоящее время я назначаю массив тайнику и зацикливаю его внутри файла шаблона, поэтому мне нужна вещь, похожая на sprintf, в шаблоне, чтобы я мог удалить десятичные знаки. - person Jitesh; 03.06.2014
comment
$c->stash->{format_nodecimal} = sub { sprintf "%.0f", @_ };, затем [% format_nodecimal(mortgage.amortization_period) %] - person hobbs; 03.06.2014
comment
Или $c->stash->{sprintf} = \&CORE::sprintf; и [% sprintf("%.0f", mortgage.amortization_period) %] - person hobbs; 03.06.2014
comment
@hobbs: Я не могу сейчас попробовать, но уверен, что \ & CORE :: sprintf не работает - person ysth; 03.06.2014
comment
Вы можете привести несколько примеров ожидаемого ввода и желаемого результата? Я считаю, что @Jitesh хочет, чтобы 2500.00 стало 2500, но чтобы 2500.10 стало 2500.1, а 2500.12 оставались 2500.12. В таком случае sprintf("%.0f", $_[0]) сам по себе этого не сделает. - person Kaoru; 03.06.2014

Template Toolkit предоставляет фильтр формата для управления переменными следующим образом:

[%- mortgage.amortization_period | format('%.0f') -%]
person RET    schedule 04.06.2014