Zend Form validator tetiklenir

2 Cevap php

Ben UniqueEmail validator çalışma almak için çalışıyorum ama benim onaylayıcısı tetiklenir asla görünüyor.

Bu benim şeklidir:

class EventManager_Form_User_Base extends SF_Form_Abstract{
public function init(){

    $this->addElementPrefixPath(
        'EventManager_Validate',
        APPLICATION_PATH . '/modules/eventManager/models/validate',
        'validate'
        );

    (...)
    $this->addElement('text','usr_email', array(
        'filters'   => array('StringTrim', 'StringToLower'),
        'valdators' => array(
            array('StringLength',true,array(3,128)),
            array('EmailAddress'),
            array('UniqueEmail', false, array(new EventManager_Model_User())),
        ),
        'required'  =>  true,
        'label'     => 'email',
    )); 



(...)
}

}

Ve burada benim validator olduğunu

class EventManager_Validate_UniqueEmail extends Zend_Validate_Abstract{

    const EMAIL_EXISTS = 'emailExists';

    protected $_messageTemplates = array(
        Self::EMAIL_EXISTS => 'Email "%value%" already exists in our system',
    );

    public function __constructs(EventManager_Model_User $model){

        $this->_model = $model;

    }
    public function isValid($value,$context = null){

        $this->_setValue($value);
        $currentUser = isset($context['usr_id']) ? $this->_model->getUserById($context['user_id']) : null;
        $user = $this->_model->getUserByEmail($value, $currentUser);
        if(null === $user){
            return true;
        }
        $this->_error(self::EMAIL_EXISTS);
        return false;
    }

}

Ben satır eklediğinizde

var_dump($value); exit; 

sonra benim isValid () fonksiyonunun ilk satırında ve benim formu çalıştırın. Daha sonra kod sadece çalışır ama benim onaylayıcısına içine almak için değil gibi görünüyor.

Ben zf 1.10.1 herhangi bir fikrin / önerileri çalıştırıyorum?

2 Cevap

valdators -> validators.

Eğer Zend_Validate_Db_RecordExists validator örneğini gördünüz mü? Kullanımı durumda aynıdır DB e-postalar için örnek çek beri komik.