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 /

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba

Upload photo in Frontend forms


Go to End
Reply


2 Posts   2115 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, 1831 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();