0

我正在使用 Zend Framework1.11。在我的 Zend 表单中,我有两个 zend 子表单,我使用 addSubForm 函数添加了这两个子表单。

现在,当我在控制器中调用这个 zend 表单时,isValid 函数不起作用。我称之为如下..

public function registeredAction(){
    $form = new Application_Form_RegisteredForm();
    $form->setAction('registered');
    $formData = $this->_request->getPost();

    if($form->isValid($formData)){
       // save into database using model class.
    } else {
      $form->populate($formData); 
    }
    $this->view->form = $form;
}

在以下代码中 isValid 不起作用,而我 print_r $fotmData 请求的数组,它打印数组,如:-

   Array(
          [personal] => Array
          (
             [firstname] => 'Example',
             [lastname]  => 'Solution' 
          )
         [MAX_FILE_SIZE] => 8388608
         [address] => Array
         (
            [country] => 'IND',
            [state] => 'RAJ'
         )
   );

我也使用了 setData() 函数,但它不起作用,它给出了异常错误“消息:方法 setData 不存在”,我使用了 php array_merge 函数但返回数组不适用于 isValid()。

谁能帮我解决这个问题。所以我可以轻松地将表单数据存储到数据库中。

谢谢!

4

2 回答 2

0

我的解决方案是使用新方法 getSubFormsValues() 创建新的基本表单,即:

class My_Form extends Zend_Form
{
    public function getSubFormsValues()
    {
        $values = array();

        foreach ($this->getSubForms() as $form) {
            $name = $form->getName();
            $value = $form->getValues(); 

            $values = array_merge($value[$name], $values);    
        }

        return $values;
    }
}

When you can call $my_form_obj->getSubFormValues() in your code.
于 2013-09-27T14:12:32.870 回答
0

看看array_merge

http://php.net/manual/de/function.array-merge.php

$newFormData=array_merge($formData["personal"],$formData["address"]);
于 2013-07-24T10:32:12.077 回答