【发布时间】:2013-03-06 03:54:43
【问题描述】:
我在 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.
【问题讨论】:
-
j0k 感谢您的回复。我试图向 sfGuardUser 添加一个“配置文件”,并且能够设置表格,但是如何将额外的字段添加到“注册”表单中,以便对用户来说是无缝的,并且它们都显示在同一个形式?我尝试按照本教程HERE 进行操作,但它似乎只适用于后端。不是前端“注册”页面。我尝试向 sfGuardUserForm.class.php 添加一个“头像”小部件,但在提交表单时它不会将值保存在任何地方。
-
如果你使用
sfGuardRegisterForm,它扩展BasesfGuardRegisterForm,扩展sfGuardUserAdminForm。您的个人资料在sfGuardUserAdminForm中定义。所以它可能会起作用。
标签: symfony-1.4 image-uploading sfguard