Метод ZeV_Validate isValid () и массив $ _POST - PullRequest
0 голосов
/ 06 июля 2011

В книге о Zend Framework я встретил специальный валидатор для уникальных адресов электронной почты. Валидатор расширяет Zend_Validate_Abstract и поэтому реализует интерфейс isValid ().

В интерфейсе подпись метода isValid ($ value). В конкретном классе это isValid ($ value, $ context = null).

Автор объясняет, что переменная $ context содержит массив $ _POST, и он полагается на значения из массива в реализации метода. Однако когда я пытаюсь воспроизвести код, мой массив $ context становится пустым. Более того, я не могу найти какую-либо ссылку на $ context в справочном руководстве Zend_Validation или на передачу значений $ _POST.

Кто-нибудь еще сталкивался с этим?

Кстати, книга о разработке веб-приложений Zend Framework 1.8 Кейта Поупа.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Массив $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 голос
/ 06 июля 2011

Похоже, что документация для Zend_Validate неполная.

Это поведение описано в руководстве для Zend_Form_Element (ctl-f "Контекст проверки")

...