1

テンプレートのパーツテールを介してカスタマイズされた 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 dir に取得するにはどうすればよいですか?

アップデート

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() 
4

1 に答える 1

3

$file->save で意図したことには、sfValidatedFileオブジェクトが必要です。FormsInput がsfFormObjectのインスタンスである場合、 4 つのsfValidatorFileでフォームを構成し、必要なパスをオプションに指定できます。それはあなたが必要とする仕事をします。

于 2013-08-16T10:45:46.393 に答える