ユーザーが「アバター」フィールドの画像をアップロードできるようにしたいsymfonyのプロジェクトがあります。以下のスキーマを使用してテーブルを「拡張」する方法に関する多くの投稿を見つけました。
Member:
inheritance:
type: column_aggregation
extends: sfGuardUser
columns:
idmember: { type: integer }
birthday: { type: date }
avatar: { type: string(255) }
bio: { type: string(255) }
列は問題なくテーブルに追加されますが、ウィジェットを変更するsfWidgetFormInputFileEditable
と壊れます。Form.class ファイルは次のとおりです。
$file_src = $this->getObject()->getAvatar();
if ($file_src == '')
{
$file_src = 'default_image.png';
}
$this->widgetSchema['avatar'] = new sfWidgetFormInputFileEditable(array(
'label' => ' ',
'file_src' => '/uploads/avatar/'.$file_src,
'is_image' => true,
'edit_mode' => true,
'template' => '<div>%file%<br />%input%</div>',
));
およびフォームの「保存」機能:
if($this->isModified())
{
$uploadDir = sfConfig::get('sf_upload_dir');
$thumbnail = new sfThumbnail(150, 150);
$thumbnail2 = new sfThumbnail(800, 800);
if($this->getAvatar())
{
$thumbnail->loadFile($uploadDir.'/avatar/'.$this->getAvatar());
$thumbnail->save($uploadDir.'/avatar/thumbnail/'. $this->getAvatar());
$thumbnail2->loadFile($uploadDir.'/avatar/'.$this->getAvatar());
$thumbnail2->save($uploadDir.'/avatar/big/'. $this->getAvatar());
}
}
フォームを送信すると、次のエラー メッセージが表示されます。
This form is multipart, which means you need to supply a files array as the bind() method second argument.