私は 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->getValues() 行をコメントにすると、そこにあります。問題を調査した後、getValues は実際のファイル (例: /tmp/php/phpBUI9M3) をアップロードされたファイルの名前に変更し、同じフォルダー (例: /tmp/php/test.png) に保持します。なんで?getValues はデータを変更してはならないという印象を受けました。
PHP: 5.2.17、Zend: 1.10.4
ありがとう!