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're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Archive /

Our old forums are still available as a read-only archive.

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

Updating the data in a $has_one relationship inside the CMS


Go to End


5 Posts   4046 Views

Avatar
Ray

Community Member, 5 Posts

10 August 2008 at 5:44pm

http://pastie.org/250753

Hallo all,

Been bashing my head against this and other problems in SS for a while now, thought i'd ask the wider community.

In the linked code, (unnecessary .. i think.. bits excluded), the dropdown box gets the list of offices just fine, but it won't update when I click save. It says it all saves ok, but when i navigate away and back again, nothing has changed. What am I missing?

Investigating the generated code it seems like the <input> tags are fine. I'm stumped.

Avatar
Matt

Community Member, 86 Posts

10 August 2008 at 6:16pm

Edited: 10/08/2008 6:19pm

Your DropdownField should have 'myOfficeID' instead of 'myOffice', because that's whats generated at the database level :)

Also, I should mention that it's common practice to use UpperCamelCase for field names - so it would be something like MyOffice => Office in your $has_one array, and new DropdownField("MyOfficeID").

Matt.

Avatar
Willr

Forum Moderator, 5523 Posts

10 August 2008 at 6:20pm

Edited: 10/08/2008 8:33pm

try change the DB field you point the drop down to from the has_one name to the actual field in the database eg change the new DropdownField() bit to

new DropdownField(
			'myOfficeID',
 		  	'Office',
 		  	$OfficesSource,
 		  	$this
		),

and see if that saves the data.

EDIT: matt pretty much posted the same thing just before me.

Avatar
Ray

Community Member, 5 Posts

10 August 2008 at 6:40pm

Thanks very much people,

Works a treat. Here's hoping that little gem of info will trickle down to the rest of my troubles.

Avatar
Sean

Forum Moderator, 922 Posts

10 August 2008 at 8:21pm

Edited: 10/08/2008 8:22pm

Even better, you can use TypeDropdown instead of DropdownField. This means you won't have to do a DataObject::get('Office') to return all the instances of the Office class, then transform that into an array map for the DropdownField source.

e.g:

new TypeDropdown('MyOfficeID', 'Office', 'Office');