Zend Form validator не запускается - PullRequest
0 голосов
/ 09 марта 2010

Я пытаюсь заставить работать мой валидатор UniqueEmail, но кажется, что мой валидатор никогда не запускается

Это моя форма:

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



(...)
}

}

А вот и мой валидатор

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

}

Когда я добавляю строку

var_dump($value); exit; 

в первой строке моей функции isValid (), а затем запустите мою форму. тогда код просто запускается, но, похоже, не попадает в мой валидатор.

Я использую zf 1.10.1. Есть идеи или предложения?

Ответы [ 2 ]

1 голос
/ 09 марта 2010

valdators -> валидаторы.

0 голосов
/ 09 марта 2010

Вы видели пример валидатора Zend_Validate_Db_RecordExists ? Забавно, так как пример проверяет электронную почту в БД, которая совпадает с вашим вариантом использования.

...