使用自定义生成的symfony 1.4表单上载文件

时间:2013-08-15 21:53:50

标签: file-upload symfony-1.4 symfony-forms

我使用的模块通过模板partails创建自定义的html表单

我需要管理表单的4个文件上传。

在操作中,我像这样拉所有字段数据:

$allData = $request->getParameterHolder()->getAll();

这会得到我上传的文件名,但我还需要将该文件保存到上传目录。

我试图像这样绑定表单:

if( isset($customData['getAttachments']) && count($allData)){
        $attachments = $formInput->bind($request->getParameter('forms_input'), $request->getFiles('forms_input'));
}

成功生成$attachments对象。完整性检查是var_dump($attachments);die;转储:

object(FormsInput)#225 (18) { ["_node":protected]=> NULL ["_id":protected]=> array(1) { ["id"]=> string(5) "32171" } ["_data":protected]=> array(6) { ["id"]=> string(5) "32171" ["form_uid"]=> string(32) "aef79b2d47722ca154788cc9c8f8de2b" ["data_array"]=> string(770) "a:20:{s:9:...

如何解压缩文件并推送到目录。我试过这个:

$file = $attachments->getValue('file');
  if($file) {
  $filename = sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension());
  $file->save(sfConfig::get('sf_upload_dir').'/'.$formTitle.'/'.$usrDir.''.$filename);
}

但它会抛出此错误:

Unknown record property / related component "value" on "FormsInput"

如何将上传到sf目录?

更新

试图使用sfValidatorFile类,但我无法弄清楚如何从$ attachment对象传递参数:

$file = new sfValidatorFile();
if($file) {
$filename = sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension());
$file->save(sfConfig::get('sf_upload_dir').'/uploadedDir');
}

抛出这个:

Fatal error: Call to undefined method sfValidatorFile::save() 

1 个答案:

答案 0 :(得分:3)

您打算使用$ file->保存需要 sfValidatedFile 对象。 如果FormsInput是 sfFormObject 的实例,则可以使用选项中的4 sfValidatorFile 配置表单。它将完成你需要的工作。