Zend Form验证器未被触发

时间:2010-03-09 08:07:46

标签: php zend-framework zend-validate

我正在尝试让我的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 个答案:

答案 0 :(得分:1)

valdators - >验证器。

答案 1 :(得分:0)

您是否看过Zend_Validate_Db_RecordExists验证器的示例?很有趣,因为该示例检查数据库中的电子邮件与您的用例相同。