3

我有一个表格,其中包含一个名为“价格”的元素。我使用“float”验证器验证这个元素。事情是当我插入时,例如:

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

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

笔记。如果我放:

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

或者

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

这没用。

4

1 回答 1

11

您可以使用过滤器 Zend_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);

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

于 2012-02-15T19:15:14.947 回答