我使用下面的代码通过我的项目中的电话号码进行验证,
$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
这样的空格。
请提出建议。
答案 0 :(得分:2)
我不太确定数字验证器如何处理空格,但我想它不会允许它们(或者你不会在这里发布)。因此,不要使用数字验证器,而是将其更改为正则表达式验证器。我对正则表达式并不擅长,所以我建议你看一下下面的页面,其中包含几个表达式的语音,而不是我给你的表达式:A comprehensive regex for phone number validation
添加验证器应该类似于:
array('regex', false, array('/^[0-9 ]+$/'))
就像我说的那样,我对正则表达式不好,所以正则表达式本身可能不完全准确,但添加这样的验证器可以解决你的问题。