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.

Archive /

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

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

Updating the data in a $has_one relationship inside the CMS


Reply


5 Posts   3385 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

Core Development Team, 84 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, 5513 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');