3

「価格」という要素を持つフォームがあります。この要素を「float」バリデーターで検証します。問題は、たとえば次のように挿入するときです。

12,50 =>有効ですが、DB(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 に答える