2012-10-20 118 views
1

我正在使用zend表單。我想驗證一個字段,並希望只允許字段中的平整值和整數值。這意味着用戶可以輸入任何浮動值,如2.0 or 3.56, etc4 or 7, etc。但我不想收到alpha numeric or alphabet inputzend表單浮點和整數驗證

我已經使用digit驗證程序,但它只允許digits而不是floating number

任何機構能告訴我如何將兩個驗證放在一起嗎?

我的代碼如下

$parent_affiliate_commission = new Zend_Form_Element_Text('parent_affiliate_commission'); 
$parent_affiliate_commission->setRequired(true) 
      ->addFilter('StringTrim') 
      ->addFilter('StripTags') 
      ->addValidator('Digits') 
      ->setAttrib('class', 'small') 
      ->addValidator('StringLength', false, array(2, 100)) 
      ->setDecorators(array('ViewHelper', 'errors')) 

回答

2

這將是很容易創建和使用custom validator。你可以簡單地通過使用PHP is_int和is_float函數進行驗證,並且仍然以'Zend方式'進行驗證。

0

通過使用回調方法,我驗證了數值中的值。因爲它不允許字符。

$inputFilter->add(
       $factory->createInput(
         array(
           'name' => 'proximity', 
           'required' => true, 
           'validators' => array(
             array(
               'name' => 'Callback', 
               'options' => array(
                 'messages' => array(
                   \Zend\Validator\Callback::INVALID_VALUE => 'The proximity value should be numbers' 
                 ), 
                 'callback' => function (
                   $value, 
                   $context = array()) 
                 { 
                  $isValid = is_numeric(
                    $value); 
                  return $isValid; 
                 } 
               ) 
             ) 
           ) 
         )));