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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

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

Update Page Information on Front End


Go to End


3 Posts   1546 Views

Avatar
Media Contour

Community Member, 33 Posts

26 February 2010 at 8:14am

I have created Profile Pages that have a Member assigned to them.

class ProfilePage extends Page {
	static $db = array(
		'MemberName' => 'Varchar(255)'
	);
	
	static $has_one = array(
		'Member' => 'Member'
	);
	function getCMSFields() {
		$fields = parent::getCMSFields();
		
		$memberfield = new HasOneDataObjectManager(
			$this,
			'Member',
			'Member',
			array(
				'FirstName' => 'First Name',
				'Surname' => 'Last Name',
				'Email' => 'Email'
			),
			'getCMSFields_forPopup'
		);
		$fields->addFieldToTab('Root.Content.Member', $memberfield);
		
		return $fields;
	}
}

class EditProfilePage_Controller extends Page_Controller {}

I also created an Edit Profile Page that has a form. Now what I want to be able to do is when the signed in member fills out the form and hits submit the form update the Profile Page who's "MemberID" matches that of the Member's "ID". How do I do that? I can't seem to figure it out.

class EditProfilePage extends Page {}

class EditProfilePage_Controller extends Page_Controller {
	
	public function init() {
		parent::init();
	}

	function EditProfile() {
		$fields = new FieldSet(
			new TextField('BandName', 'Band Name')
		);
		$actions = new FieldSet(new FormAction("UpdateProfile", "Update"));
		return new Form($this, "EditProfile", $fields, $actions);
	}
	
	function UpdateProfile($data, $form) {
		// ?????
	}
}

Avatar
Juanitou

Community Member, 323 Posts

27 February 2010 at 1:15am

Edited: 27/02/2010 1:16am

Hi!

I’ve never done it myself, but looking at the registration module today I found an EditDetailsPage that could help you: http://silverstripe.org/registration-module/

Avatar
carlos

Community Member, 42 Posts

3 March 2010 at 3:38pm

hi

you need to add member id to the form, so you know what member to update.

...
new HiddenField('memberID','',$thisMemberID);
...

now you need to update the member.

//find member
$member=DataObject::get_by_id('Member',$data['memberID']);
if($member){
   $member->BandName = $data['BandName'];
   $member->write();
}

hope it helps
cheers