Возникли проблемы с Zend Sub Form - PullRequest
0 голосов
/ 06 июня 2011

Мне удалось получить пример, показанный в учебнике по 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);

}

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

1 Ответ

0 голосов
/ 06 июня 2011

Не переживай, мне удалось разобраться:)!

Заменив

  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);
}
...