私はZend_Formをフォームの処理に使用していますが、ローカリゼーションに問題があります。Zend_Formと浮動小数点数のローカライゼーション
私は以下の使用フィールド宣言:
$this->addElement('text', 'area', array(
'label' => 'Area:',
'required' => true,
'filters' => array('StringTrim', 'NormalizedToLocalized')
));
問題がある、私はpl_PLのロケールを使用して、この中に「」小数点区切りがあるロケールではありません「」。しかし、データベース(MySQL)は "。"セパレータ。
NormalizedToLocalizedを追加しました。私のHTML形式で40,12に40.12。
POSTリクエストで40,12を渡すとき、私はZend_Formが自動的に値40,12を40.12に変換してDBに渡せるようにします(私は$ form-> getValues()メソッドを使ってフォームから値を集めます) 。これで、40,12が正常にレンダリングされますが、$ form-> getValues()では正規化された値ではなく、ローカライズされます。
私の質問は、Zend Frameworkでフィールドのレンダリングと値を取得するために別のフィルタを作成できるかどうかです。
ご協力いただきありがとうございます。
これはフォーム間で動作しますが、データが表示されている場合(たとえば、編集や他のフィールドが検証されないためにフォームが再表示されるなど)、正規化された状態で表示されます。 – tihe
あなたはどのデータセットを使用しているのかを意識する必要があります。フィルタは '$ form-> getValues()'またはそれに類するものを介して通常アクセスするフォーム要素値にのみ適用されますが、通常は戻されるデータセットである$ _POST配列に通常は適用されません検証に失敗した後のフォームに追加します。他のデータとフォームデータに適用されるフィルタが必要な場合は、そのデータを 'Zend_Filter_Input'を通して渡す必要があります。 – RockyFord
array( 'StringTrim'、 'LocalizedToNormalized')を再ポピュレートして '' filters '=' ''を使用して、検証が失敗した後、私のローカライズされた入力(、)を正規化したもの)。 getPost()は$ _POST配列を取得しませんか? – tihe