您可能需要拆分 ispost 和 isvalid:
if( isset( $_POST['submit'] )) {
if ($form->isValid( $_POST )){
echo 'Thank you';
}
//if is post but not valid reload page and render the errors
echo $form->render( $view );//render form with errors
echo $form->getMessages($view);//or just render the messages back to the view
} else {
echo $form->render( $view );//if not post render form
}
这是我最好的猜测。
[编辑]
你有没有尝试过
$file->addDecorator('File');
代替
$file->setDecorators(array(
'File',
'Errors',
));
表单级别的 setElementDecorators 可能会以某种方式干扰设置文件元素装饰器。addDecorator() 或 addDecorator() 应该防止这种情况。
我还建议您尝试使用默认装饰器进行测试以排除任何其他潜在问题。
我没有看到任何明显的东西。唯一真正不同的是 File 元素代理 isValid() 到 Zend_File_Transfer。我想那里可能有问题,但如果有的话,我会期待一个重要的错误消息。