Я использую Symfony 1.3.2 в Ubuntu, и у меня есть форма, которая содержит несколько виджетов. Одним из виджетов является sfWidgetFormInputFile, который позволяет пользователю выбирать изображение.
Если форма недействительна, я снова представляю ее пользователю, чтобы исправить ошибочные поля.
Проблема, с которой я сталкиваюсь, заключается в том, что в настоящее время, когда программа не проверяет (по какой-либо причине), файл изображения, указанный пользователем, теряется (то есть ему приходится снова выбирать файл).
Как я могу снова показать форму пользователю, с выбранным файлом изображения, который все еще там (так что ему не нужно снова выбирать файл)?
В своем действии, которое обрабатывает форму POSTed, я вызываю getFiles ($ key), а затем индексирую полученный массив, чтобы получить информацию о файле, и устанавливаю значение виджета по умолчанию (см. Ниже). Однако отображаемый виджет пуст (не сохраняет значение пути к ранее выбранному файлу.
Фрагмент моего кода (действия) выглядит так:
$files = $request->getFiles('foobar');
if(!empty($files) && isset($files['pict_path'])){
$pic_info = $files['pict_path'];
$originalName =$pic_info['name'];
$type = $pic_info['type'];
$tempName = $pic_info['tmp_name'];
$size = $pic_info['size'];
$pict_file = new sfValidatedFile($originalName, $type, $tempName, $size);
$this->form->setWidget('pict_path', new sfWidgetFormInputFile(array('default'=>$pict_file)));
}
Может кто-нибудь подсказать, как правильно реализовать желаемое поведение, описанное выше?