Zend framework 使用Zend Framework addElement时如何验证数字

Zend framework 使用Zend Framework addElement时如何验证数字,zend-framework,socialengine,Zend Framework,Socialengine,我想在将表单元素添加到表单中时,通过向函数传递“validator”子数组,将一个验证器添加到表单元素中,以便电话号码只接受数字 class User_Form_Signup_Phone extends Engine_Form { public function init() { $settings = Engine_Api::_()->getApi('settings', 'core'); $this->addElement('Te

我想在将表单元素添加到表单中时,通过向函数传递“validator”子数组,将一个验证器添加到表单元素中,以便电话号码只接受数字

    class User_Form_Signup_Phone extends Engine_Form {
    public function init() {
        $settings = Engine_Api::_()->getApi('settings', 'core');

        $this->addElement('Text', 'phone', array(
            'label' => 'Phone Number',
            'description' => $description,
            'required' => true,
            'allowEmpty' => false,
            'validators' => array(
                array('NotEmpty', true),
                array('Num', true),
                array('StringLength', true, array(10, 11)),
                array('Regex', true, array('/^[0-9]+$/i')),
            ),
//            'tabindex' => $tabIndex++,
                //'onblur' => 'var el = this; en4.user.checkUsernameTaken(this.value, function(taken){ el.style.marginBottom = taken * 100 + "px" });'
        ));
        $this->phone->getDecorator('Description')->setOptions(array('placement' => 'APPEND', 'escape' => false));
        $this->phone->getValidator('NotEmpty')->setMessage('Please enter a valid phone number.', 'isEmpty');
        $this->phone->getValidator('Regex')->setMessage('Invalid phone number.', 'regexNotMatch');
        $this->phone->getValidator('Num')->setMessage('Phone number must be numeric.', 'notAlnum');

   }
  }
我得到以下错误:

2018-08-13T11:58:19+00:00 CRIT (2): Zend_Loader_PluginLoader_Exception: Plugin by name 'Num' was not found in the registry; used paths:

没有“Num”(或Zend_Validate_Num)这样的验证器,请尝试使用“Digits”来代替。

没有“Num”(或Zend_Validate_Num)这样的验证器,请尝试使用“Digits”来代替。

您不需要下面给出错误的行

array('Num', true),
$this->phone->getValidator('Num')->setMessage('phone number必须是数字','notAlnum')

当您使用regex验证器时

array('Regex', true, array('/^[0-9]+$/i')),
“Regex”验证器将仅在数字介于0到9之间时进行验证,“StringLength”验证器将验证有效电话号码所需的长度


正如Daniel在另一个答案中指出的,Zend中不存在'Num'验证器

您不需要下面给出错误的行

array('Num', true),
$this->phone->getValidator('Num')->setMessage('phone number必须是数字','notAlnum')

当您使用regex验证器时

array('Regex', true, array('/^[0-9]+$/i')),
“Regex”验证器将仅在数字介于0到9之间时进行验证,“StringLength”验证器将验证有效电话号码所需的长度


正如Daniel在另一个答案中指出的,Zend中不存在'Num'验证器

只有正则表达式验证器对您来说就足够了。请使用下面的regax。您不需要添加额外的num验证器

^(+\d{1,2}\s)?(?\d{3})?[\s.-]\d{3}[\s.-]\d{4}$ 符合以下条件

123-456-7890 (123) 456-7890 123 456 7890 123.456.7890 +91(123)456-7890


希望它会有所帮助。

只有正则表达式验证器对您来说就足够了。请使用下面的regax。您不需要添加额外的num验证器

^(+\d{1,2}\s)?(?\d{3})?[\s.-]\d{3}[\s.-]\d{4}$ 符合以下条件

123-456-7890 (123) 456-7890 123 456 7890 123.456.7890 +91(123)456-7890

希望这会有所帮助