0

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

我为文件元素设置装饰器,如下所示:

// 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

我究竟做错了什么?我预先感谢您的协助。

4

2 回答 2

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 可能会以某种方式干扰设置文件元素装饰器。addDecorator() 或 addDecorator() 应该防止这种情况。

我还建议您尝试使用默认装饰器进行测试以排除任何其他潜在问题。

我没有看到任何明显的东西。唯一真正不同的是 File 元素代理 isValid() 到 Zend_File_Transfer。我想那里可能有问题,但如果有的话,我会期待一个重要的错误消息。

于 2012-08-11T13:00:00.890 回答
0

需要打印出 enctype="element->getEnctype();?> 并且一切正常。

于 2012-08-13T14:18:08.833 回答