2012-10-20 71 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; 
                 } 
               ) 
             ) 
           ) 
         )));