【发布时间】:2011-02-16 08:24:58
【问题描述】:
我在 Ubuntu 上使用 Symfony 1.3.2,我有一个包含多个小部件的表单。一个小部件是 sfWidgetFormInputFile,它允许用户选择一张图片。
如果表单无效,我会再次将其呈现给用户,以更正错误的字段。
我遇到的问题是,目前,当 foem 无法验证(无论出于何种原因)时,用户指定的图片文件会丢失(即他们必须再次选择文件)。
我怎样才能再次向用户显示表单,而选定的图片文件仍然存在(这样他们就不必再次选择文件)?
在处理 POST 表单的操作中,我调用 getFiles($key) 然后索引检索到的数组以获取文件信息,并设置小部件的默认值(见下文)。但是,呈现的小部件是空的(不保留先前选择的文件的路径名的值。
我的(动作)代码的 sn-p 如下所示:
$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)));
}
谁能建议如何正确实现上述期望的行为?
【问题讨论】: