使用“."用于zend验证程序浮点数中的小数 [英] Using "." for decimals in zend validator float

查看:72
本文介绍了使用“."用于zend验证程序浮点数中的小数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表单,其中包含一个称为价格"的元素.我使用浮动"验证器来验证此元素.问题是当我插入时,例如:

I have a form with a element called "price". I validate this element with the "float" validator. The thing is when I insert, for example:

12,50 =>这是有效的,但是当我尝试将其保存在数据库(mysql)上时,它另存为"12.00"

12,50 => it is valid but when I try to save it on the DB (mysql) it is saved as "12.00"

因此,我想将小数点从,"更改为.".有人知道吗?

So I wanna to change the decimal character from "," to ".". Does anybody knows how??

注意.如果我放:

$price->addValidator('Float', 'de')

$validator = new Zend_Validate_Float(array('locale' => 'de'));
$price->addValidator($validator)

它不起作用.

推荐答案

您可以使用过滤器Zend_Filter LocalizedToNormalized到它,它将根据用户的语言环境对您的本地化价格进行标准化.

You can use a filter Zend_Filter LocalizedToNormalized to it will normalized you localized price according to the user's locale.

一个典型的价格要素就是这样:

A typical price element would be like this one:

$price = new Zend_Form_Element_Text('price');
$price->setLabel('Price:')
      ->setRequired(true)
      ->setAttribs(array('required name' => 'price', 'maxlength' => '12'))
      ->addFilter('StripTags')
      ->addFilter('StringTrim')
      ->addFilter('pregReplace', array('match' => '/\s+/', 'replace' => ''))
      ->addFilter('LocalizedToNormalized')
      ->addValidator('stringLength', true, array(1, 12))
      ->addValidator('float', true, array('locale' => 'en_US'))
      ->addValidator('greaterThan', true, array('min' => 0));
$this->addElement($price);

当然,您可以对其进行改进,并添加所需的验证器/过滤器.

Of course, you can improve it and add the validators/filters you need.

这篇关于使用“."用于zend验证程序浮点数中的小数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆