在Zend Framework的一本书中,我遇到了一个针对唯一电子邮件地址的自定义验证器。验证器扩展了Zend_Validate_Abstract,因此实现了isValid()接口。
在接口中,方法签名是isValid($ value)。在具体类中,它是isValid($ value,$ context = null)。
作者解释说$ context变量包含$ _POST数组,并且他依赖于方法实现中数组的值。但是,当我尝试重现代码时,我的$ context数组为null。此外,我无法在Zend_Validation参考指南中找到对$ context的任何引用,也无法传入$ _POST值。
还有其他人遇到过这个吗?
BTW,本书是Keith Pope的Zend Framework 1.8 Web应用程序开发。谢谢!
答案 0 :(得分:2)
与$context
方法
Zend_Form_Element::isValid
数组
以下是Zend_Form_Element::isValid
传递$_POST
$context
的代码段,通常是从Zend_Form::isValid
foreach ($value as $val) {
if (!$validator->isValid($val, $context)) {
$result = false;
if ($this->_hasErrorMessages()) {
$messages = $this->_getErrorMessages();
$errors = $messages;
} else {
$messages = array_merge($messages, $validator->getMessages());
$errors = array_merge($errors, $validator->getErrors());
}
}
}
答案 1 :(得分:1)
看起来Zend_Validate的文档不完整。
Zend_Form_Element手册中描述了此行为(ctl-f“验证上下文”)