Как получить все значения из Zend Subforms для хранения в Model в Zend Framework - PullRequest
0 голосов
/ 07 июня 2011

Я следую этому примеру в руководстве по Zend Framework

http://framework.zend.com/manual/en/zend.form.forms.html

У меня проблема с получением всех значений из подформ, чтобы я мог сохранить значения в модели (базе данных)

Вот действие для обработки формы (в примере руководства по Zend Framework оно показывается только с использованием getSessionNamespace для отображения всех значений в представлении)

public function processAction()
    {
        if (!$form = $this->getCurrentSubForm()) {
            return $this->_forward('index');
        }

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

        if (!$this->formIsValid()) {
            $form = $this->getNextSubForm();
            $this->view->form = $this->getForm()->prepareSubForm($form);
            return $this->render('index');
        }

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

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

В данный момент я делаю это, чтобы получить все значения подчиненной формы (у меня есть 2 подчиненных, одна из которых называется jobDescription, а другая - userDetail)

   private function objectToArray($object)
    {
        $array=array();
        foreach($object as $member=>$data)
        {
            $array[$member]=$data;
        }
        return $array;
    }





    $values = $this->objectToArray($this->getSessionNamespace()); // get all the stored values in the session and convert it to array
                        $data = array_merge($values['jobDescription'], $values['userDetail']); // merging it together

Но я не знаю, является ли это правильным способом получения данных для Модели.

Поскольку я должен внести изменения в класс Model, чтобы он заработал.

   $data = array(
             'quoteTypeId' => 1, //
             'serviceTypeId' => $values['jobDescription']['serviceType'],
            'religionTypeId' => $values['jobDescription']['religionType'],
            'postcodeId' => $postcodeId,
            'customerComment' => $values['userDetail']['customerComment'],
            'contactEmail' => $values['userDetail']['contactEmail'],
            'contactFirstName' => $values['userDetail']['contactFirstName'],
            'contactLastName' => $values['userDetail']['contactLastName'],
            'contactPhoneNumber' => $values['userDetail']['contactPhoneNumber'],
            'quoteStatusId' => 0,  // Quote Status in Pending Status
            'ipAddress' =>$_SERVER['REMOTE_ADDR'],
            'createdDate' => $date
        );
...