0

在一本关于 Zend 框架的书中,我遇到了一个用于唯一电子邮件地址的自定义验证器。验证器扩展了 Zend_Validate_Abstract,因此实现了 isValid() 接口。

在接口中,方法签名是 isValid($value)。在具体类中,它是 isValid($value, $context = null)。

作者解释说 $context 变量包含 $_POST 数组,他在方法实现中依赖于数组中的值。但是,当我尝试重现代码时,我的 $context 数组为空。此外,我无法在 Zend_Validation 参考指南中找到对 $context 的任何引用,或者在传递 $_POST 值时找不到任何引用。

有没有其他人遇到过这个?

顺便说一句,这本书是 Keith Pope 的 Zend Framework 1.8 Web Application Development。

谢谢!

4

2 回答 2

2

与方法一起使用$context时传递数组Zend_Form_Element::isValid

Zend_Form_Element::isValid这是传递通常从中接收的$_POSTas的片段$contextZend_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());
                    }
                }
            }
于 2011-07-06T02:51:58.493 回答
1

看起来 Zend_Validate 的文档不完整。

Zend_Form_Element手册中描述了这种行为(ctl-f "Validation Context")

于 2011-07-06T03:16:28.623 回答