2012-08-10 100 views
0

我创建了一个独立的zend表单来上传文件,并将文件元素设置为必填字段。但是该文件元素不打印出任何错误消息。ZF文件元素不打印任何错误信息

我设置像这样的文件元素的装饰:

// The file element requires the File decorator instead of the 
// ViewHelper decorator 
$file->setDecorators(array(
    'File', 
    'Errors', 
)); 

我粘贴在这里的代码:http://pastebin.com/0D59pxiR

我粘贴在这里的模板:http://pastebin.com/SRYh71JN

我在做什么错?我事先感谢您的帮助。

回答

0

所需打印出ENCTYPE =“元素 - > getEnctype();?>和一切工作

0

您可能需要拆分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。我想那里可能有一个问题,但如果有的话,我会期望一个重大的错误信息。

+0

它没有工作另外,已经打印出所有的错误,除了文件元素的错误形式。 – ryy 2012-08-12 13:06:32