所以我正在处理一些要使用用户首选货币格式格式化的数字,但遇到了一个巨大的 wtf 并想看看其他 symfonians 是如何处理这个问题的。
使用NumberFormatter
助手有一个format_currency
我可以调用的函数,如下所示:
function format_currency($amount, $currency = null, $culture = null)
{
if (null === $amount)
{
return null;
}
$numberFormat = new sfNumberFormat(_current_language($culture));
return $numberFormat->format($amount, 'c', $currency);
}
的签名sfNumberFormat::format
看起来像:
function format($number, $pattern = 'd', $currency = 'USD', $charset = 'UTF-8')
看到问题了吗?format_currency
如果没有传递货币值,则签名允许默认的空货币值,然后覆盖签名的默认货币值sfNumberFormat::format
。
我的目标是设置一次用户的首选货币,并且只需将数字传递给format_currency
函数,因为传递 X 次调用的货币值是 0 意义。
我在想的是添加一个新的用户属性,它将存储用户的首选货币,然后将 NumberFormat 代码复制到我自己的 lib/helper 中,并引用要传递给sfNumberFormat::format
调用的用户属性。
任何 symfonian 以另一种方式解决这个问题?