Как очистить один набор ошибок на странице с двумя формами в Zend - PullRequest
0 голосов
/ 17 января 2011

У меня есть одностраничный веб-сайт с двумя отдельными формами, которые необходимо отправить обратно на одну и ту же страницу, проблема в том, что если я отправляю одну форму, проверка ошибок выполняется на обеих, поэтому отображаются сообщения об ошибках для обоих , Что мне нужно, так это то, что если форма первая отправляется, то появляются только сообщения об ошибках формы, а не две формы. Возможно ли это в Zend?

1 Ответ

0 голосов
/ 17 января 2011

Это не проблема для 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:
        }
    }
}
...