我创建了一个独立的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
我做错了什么?我提前感谢您的帮助。
答案 0 :(得分: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()或addDecorators()应该阻止它。
我还建议您尝试使用默认装饰器进行测试以排除任何其他潜在问题。
我没有看到任何明显的东西。唯一真正不同的是File元素代理isValid()到Zend_File_Transfer。我想那里可能存在一个问题,但是如果有的话我会发现一个重要的错误信息。
答案 1 :(得分:0)
需要打印出enctype =“element-&gt; getEnctype();?&gt;并且一切正常。