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   1694 Views

Avatar
_Jam_

Community Member, 9 Posts

9 February 2011 at 1:34pm

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

Forum Moderator, 1808 Posts

15 February 2011 at 10:27pm

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