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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Form Questions /

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

Upload photo in Frontend forms


Go to End


2 Posts   3310 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, 1899 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();