Пользовательское сообщение об ошибке класса проверки Zend Framework - PullRequest
1 голос
/ 29 апреля 2010

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

       $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 ]

2 голосов
/ 15 мая 2010

Только элемент 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'
            )
        )
    )
);
1 голос
/ 22 июля 2010
   $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'),

   ),
));
1 голос
/ 03 мая 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...