2010-11-23 60 views
0

我真的很感謝一些幫助,它一直在推動我的堅果。我試圖驗證由zend表單提交的數字,以整數或小數(2位小數)的形式,允許0或0.00但不是空輸入。zend驗證器正則表達式的一個數字的問題 - 整數或可選浮點數

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

出於某種原因,像100.00浮子生成以下驗證錯誤消息: 「‘100.00’包含其不是數字字符;但只有數字被允許」。不會生成regexNotMatch消息或regexInvalid消息,這是我所期望的。

這個驗證錯誤消息似乎是由我不打電話的數字驗證程序生成的,我可以做些什麼來阻止它踢入?

另外,空輸入不會生成任何驗證錯誤消息。

如果我嘗試像'rt67'這樣的字符串,我的regexNotMatch消息顯示正確。

我使用沒有mvc的zend組件,如果這有什麼區別的話。

回答

0

爲什麼不使用Zend_Validate_Float和/或Zend_Validate_Int?

+0

其實我是一個白癡,並在其他地方叫過數字驗證器。所以我唯一的問題就是爲什麼正則表達式驗證空輸入。我沒有使用Zend_Validate_Float或Zend_Validate_Int,因爲我認爲他們會拋出錯誤分別呈現整數或浮動。我錯了嗎?有沒有辦法讓Zend_Validate_Float接受整數,而Zend_Validate_Int接受float? – annette 2010-11-24 12:16:30

1

我打電話給數字驗證器,所以實際上並沒有問題。我已經開始接受簡單地使用setRequired接受空輸入。它驚人的夜間睡眠可以做什麼!不過,如果有人知道爲什麼正則表達式接受空輸入,我將不勝感激。

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