Сообщение об ошибке пользовательского класса проверки Zend Framework

Проверка не проходит должным образом, но не возвращает сообщение об ошибке.

       $form->addElement('text', 'phone_number', array(
     'required' => true,
       'validators' => array(
         array('NotEmpty', true, array('messages' => 'Enter a valid Phone Number')),
           array('regex', false, array('pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/',
              'messages' => 'Enter a valid Phone Number'
     )),
           'CheckPhoneNumber'),

       ),
   ));

Пользовательский класс:

class Custom_Validators_CheckPhoneNumber extends Zend_Validate_Abstract{
const IN_USE = 'inUse';

protected $_messageTemplates = array(
    self::IN_USE => "'%value%' is currently in use"
);

public function isValid($value)
{
    $this->_setValue($value);

        $user_check = Users::getActive(preg_replace("/[^0-9]/", "", $value));
        if($user_check->id){
            $this->_error(self::IN_USE);
            return false;
        }

  return true;
}

}

Только неудача не дает ошибку "IN_USE".

3 ответа

Только элемент phone_number не отображает ошибки или есть другие?

Вы выключили стандартные декораторы с disableLoadDefaultDecorators?

Как насчет этого, предоставив пользовательский валидатор в массиве:

$form->addElement(
    'text', 'phone_number', array(
        'required' => true,
        'validators' => array(
            array(
                'NotEmpty', true, array(
                    'messages' => 'Enter a valid Phone Number'
                )
            ),
            array(
                'regex', false, array(
                    'pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/',
                    'messages' => 'Enter a valid Phone Number'
                )
            ),
            array(
                'CheckPhoneNumber'
            )
        )
    )
);

Вы уверены, что он не работает в вашем пользовательском валидаторе? Попытайтесь удостовериться, что это действительно терпит неудачу в пользовательском валидаторе.

Если нет, проверьте, правильно ли настроен путь префикса для элементов формы

$form->addElementPrefixPath(
  'Custom_Validators',
  'Custom/Validators',
  'validate'
);

Код для пользовательского валидатора, кажется, в порядке.

   $form->addElement('text', 'phone_number', array(
 'required' => true,
   'validators' => array(
     array('NotEmpty', true, array('messages' => 'Enter a valid Phone Number')),
       array('regex', false, array('pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/',
          'messages'=>array(Zend_Validate_Regex::NOT_MATCH=>'%value% is not a valid phone')
 )),
       'CheckPhoneNumber'),

   ),
));
Другие вопросы по тегам