0

これが私を夢中にさせているので、私は本当に助けていただければ幸いです。Zend フォームから送信された数値を、整数または小数 (小数点以下 2 桁) のいずれかで検証しようとしていますが、0 または 0.00 を許可していますが、空の入力は許可していません。

$form->element->addValidator ('regex', false, array(
  'pattern'=>'/^\d+(\d{1,5})?(\.\d{1,2})?$/', 
  'messages'=>array(
   'regexInvalid'=>'required',
   'regexNotMatch'=>'number required')
  )
);

何らかの理由で、100.00 のような float は次の検証エラー メッセージを生成します。regexNotMatch メッセージまたは regexInvalid メッセージは生成されません。これは私が期待するものです。

この検証エラー メッセージは、私が呼び出していない数字バリデーターによって生成されているようです。それを止めるためにできることはありますか?

また、空の入力は検証エラー メッセージを生成しません。

「rt67」のような文字列を試してみると、regexNotMatch メッセージが正しく表示されます。

これが違いを生む場合、mvcなしでzendコンポーネントを使用しています。

4

3 に答える 3

1

数字バリデーターを呼び出していたので、実際には問題はありませんでした。setRequired を使用するだけで、空の入力が受け入れられることを回避しました。夜の睡眠ができることは驚くべきことです!ただし、正規表現が空の入力を受け入れた理由を誰かが知っていれば幸いです。

于 2010-11-24T12:27:00.807 に答える
0

Why not use Zend_Validate_Float and/or Zend_Validate_Int?

于 2010-11-23T16:00:53.610 に答える
0

追加

$form->element->setRequired();

空の入力を禁止します。

コードが機能し、他の添付されたバリデーターを確認します。みたいに使った

    $this->addElement('text','price', array(
        'label'      => 'Price:',
        'filters'    => array('StringTrim'),
        'required'   => true,
        'requiredSuffix'=>'*',
        'size'       => 10,
        'maxlength'     => 10,
        'validators' => array(
            array('validator' => 'Regex', 'options' => array(
                'pattern'=>'/^\d+(\d{1,5})?(\.\d{1,2})?$/', 
                  'messages'=>array(
                   'regexInvalid'=>'required',
                   'regexNotMatch'=>'number in money format (x.xx) is required')
            ))
        )
    ));    
于 2011-09-13T17:25:59.907 に答える