ZF2 Float输入为德国网站的价格字段

时间:2015-04-14 14:43:48

标签: php zend-framework2 zend-inputfilter

我需要一个德国网站价格字段的输入字段。因此,我添加了NumberFormat过滤器和IsFloat验证程序。输入的价格(例如7,5)以7.5格式正确存储到数据库双字段。但现在的问题是,如果我不想编辑该字段,它会以7.5格式填充给用户,但是他无法保存,因为它不是德语格式。所以他必须用"."替换","

有没有办法用","而不是"."来填充数字?

public function getInputFilterSpecification() {
    return [
        'price' => [
            'required' => true,
            'filters' => [
                [
                    'name' => 'NumberFormat',
                    'options' => [
                        'locale' => 'de_DE'
                    ]
                ]
            ],
            'validators' => [
                [
                    'name' => 'IsFloat',
                    'options' => [
                        'locale' => 'de_DE'
                    ]
                ]
            ]
        ],
    ];
}

1 个答案:

答案 0 :(得分:2)

我建议使用ViewHelper使用,代替.来渲染浮点数。更改数据库中的数据存储并使用,分隔符在内部处理浮动似乎不是正确的方法,肯定会导致问题。

您可以使用 ZF2 中的 inbuilt currency formatter 视图助手。

对于您的德语货币表示法,它将如下所示:

echo $this->currencyFormat(1234.56, 'EUR', null, 'de_DE');