0

Zend Framework に関する本で、一意の電子メール アドレスのカスタム バリデーターに出会いました。バリデータは Zend_Validate_Abstract を拡張し、したがって isValid() インターフェイスを実装します。

インターフェイスでは、メソッド シグネチャは isValid($value) です。具体的なクラスでは isValid($value, $context = null) です。

著者は、$context 変数には $_POST 配列が含まれており、メソッドの実装では配列の値に依存していると説明しています。ただし、コードを再現しようとすると、$context 配列が null になります。さらに、Zend_Validation リファレンス ガイドで $context への参照や、$_POST 値の引き渡しへの参照を見つけることができません。

他の誰かがこれに出くわしましたか?

ところで、この本は Keith Pope による Zend Framework 1.8 Web Application Development です。

ありがとう!

4

2 に答える 2

2

メソッドで使用する$contextと配列が渡されますZend_Form_Element::isValid

これは、通常から受信される asをZend_Form_Element::isValid渡すスニペットです。$_POST$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 に答える