Zend_Validate的isValid()方法和$ _POST数组

时间:2011-07-06 01:48:55

标签: zend-framework zend-validate

在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应用程序开发。

谢谢!

2 个答案:

答案 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“验证上下文”)