我注意到我认为 Zend_Form_Element_File 的错误。其他人可以测试它并告诉我他们是否得到相同的结果。在失败的表单上,除了 Element_File 的值之外的所有字段都会重新填充。
我的表单有 2 个文本字段和 1 个文件字段,都是必需的。
$name = new Zend_Form_Element_Text('name');
$name->setLabel('Name');
$name->setRequired(true);
$this->addElement($name);
$name2 = new Zend_Form_Element_Text('name2');
$name2->setLabel('Name2');
$name2->setRequired(true);
$this->addElement($name2);
$file = new Zend_Form_Element_File('file');
$file->setLabel('Test file')
->setDestination(APPLICATION_PATH);
$file->setRequired(true);
$this->addElement($file);
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Submit')
$this->addElement($submit);
通常,当表单失败时,它会自动填充已填写的任何字段,但它不适用于文件字段,除了更正需要更正的其他字段外,我还必须再次手动选择文件。
首先,其他人可以证实这一点吗?
我认为问题与文件字段的标记有关。我看到第一个<input>
是文件大小,然后文件本身进入第二个<input>
。
<dd>
<input type="hidden" id="MAX_FILE_SIZE" value="67108864" name="MAX_FILE_SIZE">
<input type="file" id="file" name="file">
</dd>
当提交有效表单时,发布数据仅显示<input>
文件字段的第一个,即大小[MAX_FILE_SIZE] => 67108864
而不是文件本身。
Array (
[name] => test
[MAX_FILE_SIZE] => 67108864
)
当表单有效时,上传工作正常,所以我知道文件字段本身没有任何问题,但在表单失败的情况下(正确的文件字段但其他字段之一无效),文件字段是唯一的字段表单呈现时不会重新填充。那么这是一个错误吗?当文件没有问题时必须重新添加文件很烦人。有没有人可以想到的解决方法。我尝试在表单无效的情况下进行手动填充,希望它会强制填充文件字段,就像这样,但它也不起作用。
if(//valid form){
//process the form
} else {
$form->populate($this->_request->getPost());
}