Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Form Questions

Upload photo in Frontend forms


Reply

2 Posts   1579 Views

Avatar
_Jam_

9 February 2011 at 1:34pm Community Member, 9 Posts

Hi, I hope somebody has already did this. I've been searching in the Forum but I haven't found the right solution to my problem.
I have a custom form that updates member information with upload photo. Im using SimpleImageField here but I cant seem to make it work.

class updateMemberInfo_Controller extends Page_Controller {
..

function getMemberForm() {

      // List your fields here
      $fields = new FieldSet(
         // List your fields here
         new TextField( "FirstName", "First name" ),
         new TextField( "Surname" ),
new EmailField( "Email", "Change Email Address" ),
//new EmailField( "RetypeEmail", "Re-enter Email" ),
new OptionsetField( "Gender", "Gender", array( "Male" => "Male", "Female" => "Female" ) ),
new TextAreaField( "Address" ),
new TextField( "Contact" ),
new TextField( "Country" ),
new SimpleImageField( 'Photo' )
);

$actions = new FieldSet( new FormAction( "doSave", "Save", "", "", "big-button" ) );

      $requiredFields = new RequiredFields( "Email", "FirstName", "Surname", "Address" );

$form = new Form( $this, "Form", $fields, $actions, $requiredFields );

return $form;
}

function doSave( $data, $form ) {

$file = new Image();
$file->loadUploadedImage( $_FILES[ 'Photo' ] );

// Member object and load the form data into it
$member = Member::currentUser();
$form->saveInto( $member );

// Write it to the database. This needs to happen before we add it to a group
$member->Birthday = $data[ 'Month' ]."/".$data[ 'Day' ]."/".$data[ 'Year' ];

$form->saveInto( $member );

$form->AddErrorMessage( 'message', "Your profile has been updated.", 'good' );

return Director::redirectBack();

}

Any help would be greatly appreciated. Thanks!

/John

Avatar
swaiba

15 February 2011 at 10:27pm Forum Moderator, 1796 Posts

I did this a while ago - might not be the cleanest (I use uploadify now) - but I hope it helps...

$up =new Upload();
$bUploadNew = false;

if (!empty($data['Photo']['name']))
   $bUploadNew = true;

if ($bUploadNew) {
   $img = Object::create('Image');
   $up->loadIntoFile($data['Photo'], $img, 'Uploads');
   if($up->isError()) {
      $form->addErrorMessage('Logo','error','required');
      $bValid = false;
   }
}

if (!$bValid) return Director::redirectBack();