ZF2 使用 inputFilter

ZF2 using inputFilter

我想知道我做错了什么,我想在数据库中保存一些不是来自 POST 或 GET:

的值
public function saveAction()
    {
        $wikiTable = $this->getServiceLocator()->get('WikiTable');

        $data = array('source' => $someVal);

        $form = new WikiForm();
        $inputFilter = new \MyApp\Form\WikiFilter();
        $form->setInputFilter($inputFilter);
        $form->setData($data);
        $this->saveWiki($form->getData());
        //$this->saveWiki($data);                                    
    }

维基过滤器:

       $this->add(
            array(
                'name' => 'source',
                'required' => false,
                'filters' => array(
                    array('name' => 'StripTags'),
                    array('name' => 'StringTrim'),
                )
            )
        ); 

和表格:

$this->add(array(
            'name' => 'source',
            'type' => 'Zend\Form\Element\Hidden', 
            'options' => array(
                'label' => 'source',
            )
        ));

作为回应,我收到错误:

Zend\Form\Form::getData cannot return data as validation has not yet occurred

这一行之后:

$form->setData($data);

您需要将其余代码放入如下内容:

if($form->isValid()){
   $this->saveWiki($form->getData());
}

否则您的表单未通过验证,您将无法通过调用 $form->getData()

从中获取任何数据

因此,无论何时使用表单(无论数据是否来自 POST 请求),请确保在表单变量上调用函数 isValid() ,否则您将无法获得返回数据,你会得到你之前写的错误