我想知道我做错了什么,我想在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无法返回数据,因为验证还没有 发生
答案 0 :(得分:4)
这一行之后:
$form->setData($data);
您需要将其余代码放到这样的代码中:
if($form->isValid()){
$this->saveWiki($form->getData());
}
否则您的表单未经过验证,您将无法通过调用$ form-> getData()
从中获取任何数据因此,无论何时使用表单(无论数据是否来自POST请求)都要确保在表单变量上调用函数isValid(),否则您将无法获取数据,并且您将得到你之前写的错误