Zend Framework Özel Doğrulama Sınıf Hata Mesajı

2 Cevap php

Doğrulama gerektiği gibi başarısız ama hata iletisi vermez.

       $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'),

       ),
   ));

Özel Sınıf:

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;
}

}

Sadece başarısız "IN_USE" hatası vermez.

2 Cevap

Bu hataları görüntülemek veya başkaları var değil sadece phone_number unsurdur?

Sizinle varsayılan dekoratörler kapalı disableLoadDefaultDecorators?

Bu nasıl bir dizi özel onaylayıcıyı temini hakkında:

$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'
            )
        )
    )
);

Are you sure that it fails in your custom validator? Try to make sure that it actually fails in the custom validator.

Eğer değilse form elemanları için yapılandırılmış doğru önek yolu varsa, kontrol

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

Özel doğrulama için kod iyi olacak gibi görünüyor.