Это не проблема для Zend, но это проблема для вас, чтобы решить!Если вы предоставляете своей форме скрытое поле или если у вас есть идентификатор поля, уникальный для одной формы, вы сможете проверить, какая форма была отправлена в вашем контроллере, а затем сообщить Zend, какую форму вы хотите проверить.Что-то вроде следующего должно выполнить работу, оно проверит поле с идентификатором unique_form_one_field
, которое, очевидно, должно быть только в первой форме, например, это может быть скрытое поле:
// Get the forms:
$form1 = $this->_helper->formLoader('form_one');
$form2 = $this->_helper->formLoader('form_two');
// Check if there is a POST:
if (!$request->isPost())
{
// It isn't show the forms:
$this->view->form_one = $form1;
$this->view->form_two = $form2;
}
else
{
// It is, get the POST data:
$post_data = $request->getPost();
// Check if form one has been submitted:
if (isset($post_data['unique_form_one_field']))
{
// Check if form one is valid:
if (!$form1->isValid($post_data))
{
// Its got an error, display the forms again, form one will now be populated with the data and also the error messages:
$this->view->form_one = $form1;
$this->view->form_two = $form2;
}
else
{
// Form one was valid - do what you want to process it:
}
}
else
{
// Check if form two is valid:
if (!$form2->isValid($post_data))
{
// Its got an error, display the forms again, form two will now be populated with the data and also the error messages:
$this->view->form_one = $form1;
$this->view->form_two = $form2;
}
else
{
// Form two was valid - do what you want to process it:
}
}
}