Я следую этому примеру в руководстве по 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
);