And*_*den 5 php forms zend-form zend-framework2 zend-inputfilter
我想知道我做错了什么或者这是否是ZF2中的一个错误:当我试图在表单上设置一些数据时,验证它并检索数据它只是一个空数组.
我从一些类中提取了这段代码以简化问题
$form = new \Zend\Form\Form;
$form->setInputFilter(new \Zend\InputFilter\InputFilter);
$form->add(array(
'name' => 'username',
'attributes' => array(
'type' => 'text',
'label' => 'Username',
),
));
$form->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Register',
),
));
if ($this->getRequest()->isPost()) {
$form->setData($this->getRequest()->getPost()->toArray());
if ($form->isValid()) {
echo '<pre>';
print_r($form->getData());
print_r($form->getMessages());
echo '</pre>';
}
}
Run Code Online (Sandbox Code Playgroud)
两个都print_r()显示空数组.我没有从表单中获取任何数据,也没有任何消息.是我的错还是ZF2?
感谢@SamuelHerzog和@Sam,表单需要所有元素的inputFilters.对于问题中描述的形式,这个简短的代码足以让它完全起作用.
$inputFilter = new InputFilter();
$factory = new InputFactory();
$inputFilter->add($factory->createInput(array(
'name' => 'username'
)));
$form->setInputFilter($inputFilter);
Run Code Online (Sandbox Code Playgroud)
它不需要对元素有任何规则,只需要添加到inpoutFilter就可以了.默认情况下,任何元素都具有必需的标志,并且不能是空值.