ZendFramework 2:表单中的区域设置货币值

时间:2013-06-19 12:31:37

标签: forms zend-framework2 locale

有没有办法转换文本输入如何在Form构造方法或ViewHelper中以正确的区域设置编号格式显示其值中的货币?

e.g。

  1. 数据库中的值为10000.50
  2. 在美国或英国,被视为10,000.50
  3. 欧元被视为10.000,50
  4. 我已经能够在控制器,模型和视图中进行转换,但是没有遇到过如何做到这一点。

    由于

    Aborgrove

1 个答案:

答案 0 :(得分:4)

您有Zend\I18n组件,它可以运行格式化程序来格式化数字。您可以将NumberFormat用于一般数字,CurrencyFormat用于特定货币。

这些格式化程序位于Zend\I18n\View\Helper域中,但实际上并不依赖于视图。因此,您可以随意使用它们:

use Zend\I18n\View\Helper\CurrencyFormat;

$formatter = new CurrencyFormat;
$formatter->setLocale('en-US');

$currency  = $formatter(1234.56, 'EUR'); // "€1,234.56"
$currency  = $formatter(1234.56, 'USD'); // "$1,234.56"

$formatter->setLocale('nl-NL');
$currency  = $formatter(1234.56, 'EUR'); // "€ 1.234,56"

你必须要注意两件事:

  1. 数字格式样式取决于区域设置,因此请提供正确的区域设置(或使用Locale::setDefault()设置默认区域设置)。
  2. “EUR”或“USD”仅适用于标志,并且与语言环境一起将被添加到格式化的数字
  3. 如果您只想格式化没有任何货币代码的数字,则可以使用Zend\I18n\View\Helper\NumberFormat。有关格式的详细信息,请参见manual