我是Zend Framework的新手,我遇到了一些奇怪的东西,我希望有人可以解释一下。请考虑以下代码:
<? class Form extends Zend_Form
{
public function init()
{
$upload = new Zend_Form_Element_File('upload');
$this->addElement($upload);
}
}
if ($_POST)
{
$form = new Form();
var_dump($form->isValid($_POST));
$values = $form->getValues();
var_dump($_FILES, file_exists($_FILES['upload']['tmp_name']));
exit;
}
?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="upload"/>
<input type="submit" name="submit"/>
</form>
如果上传任何文件,$ _FILES的var_dump将输出上传的文件不存在。评论$ form-&gt; getValues()行,它就在那里。在调查问题之后 - getValues将实际文件(即./tmp/php/phpBUI9M3)重命名为上传文件的名称,并将其保存在同一文件夹中(即./tmp/php/test.png)。为什么?我的印象是getValues不应该改变任何数据。
PHP:5.2.17, Zend:1.10.4
谢谢!
答案 0 :(得分:1)
从手册:
默认情况下,当您在表单上调用getValues()时,将自动接收该文件。这种行为背后的原因是,文件本身就是文件元素的值。
如果这不是你想要发生的事情,有一些如何改变这种行为的例子,但这对我来说似乎是合乎逻辑的。