0

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 を実行していますが、アイデアや提案はありますか?

4

2 に答える 2

1

バリデーター -> バリデーター。

于 2010-03-09T17:05:40.633 に答える
0

Zend_Validate_Db_RecordExistsバリデーターの例を見たことがありますか? この例では、ユース ケースと同じ DB 内の電子メールをチェックするため、面白いです。

于 2010-03-09T12:43:56.663 に答える