Проблема с Zend Sub Form

Мне удалось получить пример, показанный в руководстве по форме Zend Mutipage http://framework.zend.com/manual/en/zend.form.advanced.html код работает, но у меня возникла проблема с проверкой.

Первая часть формы загружается нормально, однако, когда я нажимаю кнопку «Сохранить и продолжить» во второй части формы, появляются сообщения об ошибках проверки. (Что неверно, потому что ошибки проверки должны появляться только тогда, когда пользователь отправляет вторую часть подчиненной формы).

Мне кажется, что пример, показанный на странице учебника Zend framework

  if (!$temp->formIsValid())
                    {

                        $form = $this->getNextSubForm();
                        $this->view->form = $this->getForm()->prepareSubForm($form);
                        return $this->render('prepaid-funeral-plan');
                    }

Проверка того, действительна ли вся форма, но это вызывает проблему, заключающуюся в том, что ошибка проверки появляется во второй части подчиненной формы до того, как пользователь отправит данные.

Вот полный код формы processAction()

 public function processAction()
{
                if (!$form = $this->getCurrentSubForm()) {
                    // if there's no form data goto the beginning form stage
                    return $this->_forward('prepaid-funeral-plan');
                }

                if (!$this->subFormIsValid($form,$this->getRequest()->getPost()))
                        {
                            $this->view->form = $this->getForm()->prepareSubForm($form);
                            return $this->render('prepaid-funeral-plan');
                        }
                if (!$this->formIsValid())
                        {

                            $form = $this->getNextSubForm();
                            $this->view->form = $this->getForm()->prepareSubForm($form);
                            return $this->render('prepaid-funeral-plan');
                        }

                // Valid form!
                // Render information in a verification page
                $this->view->info = $this->getSessionNamespace();
                $this->render('verification');

                     //Clear the session data!
    Zend_Session::namespaceUnset($this->_namespace);

}

Большое спасибо заранее!


person user648198    schedule 06.06.2011    source источник


Ответы (1)


Не беспокойтесь об этом, мне удалось это понять :)!

Заменив

  public function formIsValid()
    {
        $data = array();
        foreach ($this->getSessionNamespace() as $key => $info) {
            $data[$key] = $info;
        }

        return $this->getForm()->isValid($data);
    }

С участием

public function formIsValid()
{ 
   $data = array();
    foreach ($this->getSessionNamespace() as $key => $info) {
        $data[$key] = $info[$key];
    }
    return (count($this->getStoredForms()) < count($this->getPotentialForms()))? false : $this->getForm()->isValid($data);
}
person user648198    schedule 06.06.2011