2

sfWidgetFormInputFileフィールドを持つフォームがあります。画像をアップロードしていますが、アップロード後、アップロードしたばかりのファイルに処理を加えたいと思います。

私はこれにvalidated_file_classを使用できることを知っています。カスタムクラスのsave()メソッドを上書きしていて、ファイルは正しく保存されますが、データベースへの保存が機能せず、ファイル名フィールドにnull値が送信されるだけです。私は何かが足りないのですか?

関連するコードは次のとおりです。

class MyForm extends BaseMyForm
{
  public function configure()
  {
    $this->widgetSchema['image'] = new sfWidgetFormInputFile();
    $this->validatorSchema['image'] = new sfValidatorFile(array(
                                         'required' => true,
                                         'path' => sfConfig('sf_upload_dir'),
                                         'mime_types' => 'web_images',
                                         'validated_file_class' => 'MyCustomValidatedFile'
                                                          ));
  }
}

class MyCustomValidatedFile extends sfValidatedFile
{
  public function save($file = null, $fileMode = 0666, $create = true, $dirMode = 0777)
  {
    parent::save($file, $fileMode, $create, $dirMode);
  }
}
4

1 に答える 1

0

はい、分かりました...

save()メソッドのreturnステートメントがありませんでした...パスプレフィックスなしで保存されたファイルの名前を返す必要があります。

$fn = parent::save($file, $fileMode, $create, $dirMode);
//processing
return $fn;
于 2011-02-19T02:42:12.300 に答える