Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用"&引用;对于zend验证程序浮点中的小数_Mysql_Zend Framework_Zend Form_Zend Validate_Zend Locale - Fatal编程技术网

Mysql 使用"&引用;对于zend验证程序浮点中的小数

Mysql 使用"&引用;对于zend验证程序浮点中的小数,mysql,zend-framework,zend-form,zend-validate,zend-locale,Mysql,Zend Framework,Zend Form,Zend Validate,Zend Locale,我有一个表单,其中有一个元素叫做“price”。我用“float”验证器验证这个元素。问题是当我插入时,例如: 12,50=>它是有效的,但当我试图将它保存在DB(mysql)上时,它会保存为“12.00” 所以我想把十进制字符从“,”改为“.”。有人知道怎么做吗 注意。如果我说: $price->addValidator('Float', 'de') 或 它不起作用。您可以使用过滤器Zend\u filter LocalizedToNormalized,它将根据用户的区域设置标准化您的

我有一个表单,其中有一个元素叫做“price”。我用“float”验证器验证这个元素。问题是当我插入时,例如:

12,50=>它是有效的,但当我试图将它保存在DB(mysql)上时,它会保存为“12.00”

所以我想把十进制字符从“,”改为“.”。有人知道怎么做吗

注意。如果我说:

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


它不起作用。

您可以使用过滤器Zend\u filter LocalizedToNormalized,它将根据用户的区域设置标准化您的本地化价格

典型的价格因素如下:

$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);

当然,您可以改进它并添加所需的验证器/过滤器。

我怀疑您的数据库认为它位于不同的国家。你在使用什么数据库?您可以为它添加一个标记。您的意思是要在将十进制字符保存到数据库时将其从“.”更改为“?在数据库中以英语格式格式化数据比在用户的语言环境中本地化数据更合适。事实上,我不想将其本地化。我只想使用浮点数作为123.4之类的数字的验证器,我不想使用逗号。那么你应该使用一个不接受逗号作为有效浮点数分隔符的区域设置,比如en_US。下面是您要查找的行:
->addValidator('float',true,array('locale'=>'en_US'))
$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);