在一本关于 Zend Framework 的书中,我遇到了一个用于唯一电子邮件地址的自定义验证器。验证器扩展了 Zend_Validate_Abstract,因此实现了 isValid() 接口。
在接口中,方法签名是isValid($value)。在具体类中,它是 isValid($value, $context = null)。
作者解释说 $context 变量包含 $_POST 数组,并且他在方法的实现中依赖于该数组中的值。然而,当我尝试重现代码时,我的 $context 数组为空。此外,我无法在 Zend_Validation 参考指南中找到任何对 $context 的引用,或传递 $_POST 值。
还有其他人遇到过这个吗?
顺便说一句,这本书是 Keith Pope 写的《Zend Framework 1.8 Web 应用程序开发》。
谢谢!
与
$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());
}
}
}
Zend_Validate 的文档似乎不完整。
此行为在 Zend_Form_Element 手册中进行了描述(ctl-f“验证上下文”)