Формат вывода заполнителя

Я создаю динамический список placeholders, некоторые значения в этих заполнителях являются десятичными числами, которые должны представлять деньги.

Что мне интересно, есть ли способ отформатировать их для отображения как таковой?

Что-то вроде [[+MoneyField:formatmoney]]

Я вижу http://rtfm.modx.com/revolution/2.x/making-sites-with-modx/customizing-content/input-and-output-filters-(output-modifiers) но не вижу способа сделать это здесь.

1 ответ

Решение

Вы наверняка можете, под заголовком "Создание пользовательского модификатора вывода" на ссылке, которую вы разместили, описано, как вы можете поместить имя фрагмента в качестве модификатора вывода. Этот фрагмент получит [[+MoneyField]] значение в переменной с именем $input,

Таким образом, вам придется создать этот пользовательский фрагмент, который может быть так же просто, как

return '$'.number_format($input);

Другая версия этого - вызов фрагмента напрямую, а не как модификатор вывода, например так:

[[your_custom_money_format_snippet ? input=`[[+MoneyField]]`]]

Я не уверен, есть ли какая-либо разница между двумя в этом случае. Очевидно, что вы можете передать любое значение в фрагмент числового формата при вызове его как фрагмента вместо модификатора вывода. И я уверен, что есть микросекунда разницы в производительности двух, но я боюсь, я не знаю, какая из них победит.;)

Обновление: На самом деле нашел точный пример, который вы хотите реализовать по этой ссылке; http://rtfm.modx.com/revolution/2.x/making-sites-with-modx/customizing-content/input-and-output-filters-%28output-modifiers%29/custom-output-filter-examples

Snippet:

<?php
$number = floatval($input);
$optionsXpld = @explode('&', $options);
$optionsArray = array();
foreach ($optionsXpld as $xpld) {
    $params = @explode('=', $xpld);
    array_walk($params, create_function('&$v', '$v = trim($v);'));
    if (isset($params[1])) {
        $optionsArray[$params[0]] = $params[1];
    } else {
        $optionsArray[$params[0]] = '';
    }
}
$decimals = isset($optionsArray['decimals']) ? $optionsArray['decimals'] : null;
$dec_point = isset($optionsArray['dec_point']) ? $optionsArray['dec_point'] : null;
$thousands_sep = isset($optionsArray['thousands_sep']) ? $optionsArray['thousands_sep'] : null;
$output = number_format($number, $decimals, $dec_point, $thousands_sep);
return $output;

Используется как модификатор вывода:

[[+price:numberformat=`&decimals=2&dec_point=,&thousands_sep=.`]]
Другие вопросы по тегам