2011-10-18 43 views
4

我已經爲這我還沒有找到答案一個簡單的問題,那就是如何在Zend Framework中驗證float/double是否等於或大於/小於min?

如何使用內置的Zend驗證測試是否浮動/ dobule是大於或等於的分?

我已經在尋找符合我的要求的答案,並且我發現了這個問題GreaterOrEqual validator in Zend Framework但我的情況有點不同。此外,我知道我可以創建自己的驗證器或複製網絡上的其中一個,例如Greater Than or Equal Validator,但我想知道如何使用內置的驗證器進行此驗證。

這是一個讓你更好理解的例子。

如果我有一個整數,我可以通過這種方式實現這一目標:

$Validators = array(new Zend_Validate_Int(), new Zend_Validate_GreaterThan($min - 1)); 
// Validate the number 

相反,如果我有一個浮動,我不能這樣做這一招,正如很多程序員都知道,試圖用浮動做骯髒的事情會由於舍入問題(What Every Computer Scientist Should Know About Floating-Point Arithmetic)而產生很多問題。

感謝所有

+1

答案是「否」,你不能用內置的驗證器來做到這一點。創建你自己的應該是相當微不足道的。 – Phil

回答

2

在我嘗試了很多方法之後,我得出結論,實際上(Zend Framework版本爲1.11)使用內置驗證器(如Phil所建議的)執行此類驗證是不可能的。

我真的希望他們會在下一個版本中添加這個驗證器。

+0

這個答案是不正確的。可以從@rukya查看以下答案。 – surfer190

2

這不正是你要的,但我認爲這是最簡單的: 的關鍵是「inlusive」。

$number->addValidator('Float'); 
    $number->addValidator('Between', false,array('min' => '5,5', 'max' => $greatest_number+1, 'inclusive' => true)); 

在這裏你有所有驗證:

Zend_Validate_Abstract Class Reference

所以對你的問題的回答是「不」,還有比不大於或等於驗證的浮動。

-1

怎麼樣使用

新Zend_Validate_Callback( 函數($值){ 如果($值> = 1){ 迴歸真實; } 返回false;});

相關問題