我正在尝试让我的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任何想法/建议?
答案 0 :(得分:1)
valdators - >验证器。
答案 1 :(得分:0)
您是否看过Zend_Validate_Db_RecordExists验证器的示例?很有趣,因为该示例检查数据库中的电子邮件与您的用例相同。