1

有什么方法可以从 Form 构造方法或 ViewHelper 中转换文本输入如何以正确的语言环境数字格式显示货币值?

例如

  1. 数据库中的值为 10000.50
  2. 在美国或英国,被视为 10,000.50
  3. 在 EUR 被视为 10.000,50

我已经能够在控制器、模型和视图中进行转换,但还没有遇到如何在这里进行转换。

谢谢

阿博格罗夫

4

1 回答 1

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" 仅用于符号,与语言环境一起将被添加或附加到格式化的数字

Zend\I18n\View\Helper\NumberFormat如果您只想格式化没有任何货币代码的数字,您可以简单地使用。有关格式的更多信息,请参见手册

于 2013-06-19T14:00:28.750 回答