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

问题描述 投票:0回答:2

在一本关于 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 应用程序开发》。

谢谢!

php zend-framework zend-validate
2个回答
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
投票

Zend_Validate 的文档似乎不完整。

此行为在 Zend_Form_Element 手册中进行了描述(ctl-f“验证上下文”)

© www.soinside.com 2019 - 2024. All rights reserved.