您可能需要拆分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可能在某种程度上与设置文件元素装饰interferring。 addDecorator()或addDecorators()应该防止这种情况。
我也建议你尝试使用默认的装饰测试来排除任何其他潜在的问题。
我没有看到任何明显的。唯一不同的是,File元素代理将isValid()传递给Zend_File_Transfer。我想那里可能有一个问题,但如果有的话,我会期望一个重大的错误信息。
它没有工作另外,已经打印出所有的错误,除了文件元素的错误形式。 – ryy 2012-08-12 13:06:32