我在 Ubuntu 上使用 Symfony 1.3.2,我有一个包含多个小部件的表单。一个小部件是 sfWidgetFormInputFile,它允许用户选择一张图片。
如果表单无效,我会再次将其呈现给用户,以更正错误的字段。
我遇到的问题是,目前,当 foem 无法验证(无论出于何种原因)时,用户指定的图片文件会丢失(即他们必须再次选择文件)。
如何在所选图片文件仍然存在的情况下再次向用户显示表单(因此他们不必再次选择文件)?
在处理 POST 表单的操作中,我调用 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)));
}
谁能建议如何正确实现上述所需的行为?