ZF2使用inputFilter

时间:2015-05-23 19:10:05

标签: validation zend-framework2 zend-form zend-inputfilter

我想知道我做错了什么,我想在db中保存一些不是来自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);                                    
    }

WikiFilter:

       $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无法返回数据,因为验证还没有   发生

1 个答案:

答案 0 :(得分:4)

这一行之后:

$form->setData($data);

您需要将其余代码放到这样的代码中:

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

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

从中获取任何数据

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