需要Zend表格的帮助

use*_*198 3 php zend-framework

我正在创建一个zend表单状态下拉列表,让用户更新其状态.

所有状态值都来自数据库.使用getProviderQuoteStatus($ providerId,$ quoteId,$ quoteStatusId)方法确定用户可以使用的状态.

我目前面临的问题是表单何时通过验证过程.

我一直在获取'1' was not found in the haystack(因为状态值填充在控制器中而不是表单本身,因此providerQuoteStatus表单元素数组为空).任何人都可以帮我解决这个问题怎么解决?

非常感谢提前!

  private function getProviderQuoteStatusForm()
    {

             $form = new Application_Form_ProviderQuoteStatus(array(
             'action' => '/leads/update-Provider-Quote-Status'
             ,'method' => 'post',
             ));

             return $form;
    }

private function getProviderQuoteStatus($providerId,$quoteId,$quoteStatusId)
    {

             $form = $this->getProviderQuoteStatusForm();

            $providerQuoteStatus = new Application_Model_DbTable_ProviderQuoteStatus();
            $providerQuoteStatusValues = $providerQuoteStatus->                   
                                         getProviderQuoteStatusUpdateValues ($quoteStatusId);   

           $form->getElement('providerQuoteStatus')->addMultiOptions($providerQuoteStatusValues);
           $form->getElement('providerQuoteStatus')->setValue($quoteStatusId);
           $form->getElement('quoteId')->setValue($quoteId); // set Quote Id to the hidden field
         return $form;
    }





    public function updateProviderQuoteStatusAction()
    {

                $form = $this->getProviderQuoteStatusForm(); // Status Update dropdown box
                $this->view->form = $form;

           if ($this->getRequest()->isPost())
            { // is post type request has been made
                $formData = $this->getRequest()->getPost();


                if ($form->isValid($formData))
                        { // form elements has been validated

                                  $quoteId = $form->getValue('quoteId');
                                  $providerQuoteStatus = $form->getValue('providerQuoteStatus');
                                     $this->_helper->redirector('lead'); // redirect back
                                 // $this->_forward('leads');
                        }
                           $form->populate($formData);

            }
    }
Run Code Online (Sandbox Code Playgroud)

Ada*_*ter 7

取自Zend网站:

默认情况下,此元素注册一个InArray验证器,该验证器验证已注册选项的数组键.您可以通过调用setRegisterInArrayValidator(false)或将FALSE值传递给registerInArrayValidator配置键来禁用此行为.

我之前遇到过这个问题,并且禁用此默认验证器可以解决问题.