目前的表格:
$main = new Zend_Form_SubForm();
$kids = new Zend_Form_SubForm();
$number = $main->addElement(... attribs and so on ...);
$this->addSubForms(array('main'=>$main,'kids'=>$kids));
当我将此文件上传字段添加到我的表单时:
for($index = 1; $index <= 10; $index++) {
$name = 'Image'.$index;
$label = 'Image'.$index;
$image = new Zend_Form_Element_File($name);
$image->setLabel($label)
->addValidator('Count', true, 1)
->addValidator('Size', false, 10485760)
->addValidator('Extension', false, 'jpg,jpeg,tif,tiff,eps');
$kids->addElement($image);
}
我的控制器中的以下部分将失败:
$post = $this->_request->getPost();
if($form->isValid($post) )
并且不会输出任何错误。
错误报告已启用,以下部分(如果无效)也不会返回任何警告或错误消息!
else {
print_r($form->getMessages());
print_r($form->getErrors());
print_r($form->getErrorMessages());
}
我正在使用标准的Zend格式无效函数:
public function isValid($data)
{
$isValid = parent::isValid($data);
return $isValid;
}
这可能是错的?
顺便说一下: 打印出帖子数据看起来也很好。 我已经将Zend更新到版本1.12.13而没有任何改进:(
答案 0 :(得分:0)
如果有人感兴趣并且可能遇到同样的问题,我终于得到了解决方案:
解决方案1:
问题是,提交的$ _FILES仅限于20个文件上传字段。请参阅php ini max_file_uploads
- &gt; http://php.net/manual/en/ini.core.php#ini.max-file-uploads。
这就是为什么Zend总是说表单没有经过验证。奇怪,因为没有给出提示的错误消息。
顺便说一下,如果您安装了php扩展程序suhosin
,那么来自php的参数将被覆盖:它带有自己的上传限制:suhosin.upload.max_uploads
解决方案2:
另一种解决方案是使用$form->isValidPartial
代替$form->isValid
。
在这种情况下,不存在验证不存在的文件元素。
如果您提交空表单字段,请在此处查看修补程序: http://framework.zend.com/issues/browse/ZF-11707