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.

Customising the CMS

Dropdown ignores database entry


Reply

3 Posts   866 Views

Avatar
eddieconnecti

27 January 2010 at 12:21pm Community Member, 26 Posts

I know it is not only me having this problem, but no one can tell me how to fix this. I have a dropdownfield and want to save an id with it. After submit, the id is stored in the database and the dropdown shows the selected value. But after requesting the form from the sitetree again, the dropdown shows the first value, in my case "Please choose".

Example of my source (Location extends DataObject):

   public static $has_one = array(
      "MeetingPoint" => "Location"
   );

   public function getCMSFields() {
    $fields = parent::getCMSFields();
   
    // create or find tabs
    $fields->findOrMakeTab( "Root.Content.Locations" );

$meetingPoint = new DropdownField( "MeetingPoint", "Meeting Point", DataObject::get( "Location" )->toDropDownMap( "ID", "Name", "Please choose" ) );
      $fields->addFieldToTab( "Root.Content.Locations", $meetingPoint );
    return $fields;
   }

   function onBeforeWrite()
   {
      $this->MeetingPointID = $this->MeetingPoint;
      parent::onBeforeWrite();
   }

Is this an official bug?

Avatar
Willr

27 January 2010 at 1:11pm Forum Moderator, 5511 Posts

You should name your dropdown field 'MeetingPointID' rather then 'MeetingPoint' and then get rid of your onBeforeWrite() call. Its confusing SS since when it loads the data it doesn't quite remember that MeetingPointID is to go into MeetingPoint. Well at least I'm pretty sure thats the solution.

Avatar
eddieconnecti

28 January 2010 at 9:06am Community Member, 26 Posts

Great! This fixed it! I can now use all my dropdowns and it selects stored values as given! Perfect! Thanks a lot!