1

我在我的项目中使用下面的代码通过电话号码进行验证,

$phone = new Zend_Form_Element_Text('phone', array(
      'label' => $view->_('phone'),
      'value' => '',
      'class' => 'text-size text hastip',
      'title' => $qtips_messages['key_phone'],
      'required' => true,
      'tabindex' => '13',
      'validators' => array(
                                array('Digits', false, array(
                    'messages' => array(
                        'notDigits'     => "Phone Invalid Digits, ex. 1234567890",
                        'digitsStringEmpty' => "",
                    ))),
                array('notEmpty', true, array(
                    'messages' => array(
                        'isEmpty'   =>  'Phone can\'t be empty'
                    )
                )),
                array('StringLength', false, array(10, 10, 'messages' => array(
                            'stringLengthInvalid'           => "Phone Length Invalid entry",
                            'stringLengthTooShort'          => "Phone Invalid Length , ex. 1234567890"
                    ))),
            ),
      'filters' => array('StringTrim'),
      'decorators' => $this->requiredElementDecorators,
      'description' => '<img src="'.$baseurl.'/images/star.png" alt="required" />',
      'filters' => array('StringTrim')
    ));
    $this->addElement($phone);

当字段为空、无效、长度时,这很有效。我的要求是,电话字段也应该接受空格123 456 7890。请就此提出建议。

4

1 回答 1

2

我不太确定数字验证器如何处理空格,但我想它不会允许它们(或者你不会在这里发布)。因此,不要使用数字验证器,而是将其更改为正则表达式验证器。我不擅长正则表达式,所以我建议您查看以下包含几个电话号码表达式的页面,而不是我给您的表达式:电话号码验证的综合正则表达式

添加验证器应类似于:

array('regex', false, array('/^[0-9 ]+$/'))

就像我说的,我不擅长正则表达式,所以正则表达式本身可能并不完全准确,但是添加这样的验证器应该可以解决您的问题。

于 2012-01-18T08:31:32.967 回答