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   917 Views

Avatar
eddieconnecti

Community Member, 26 Posts

27 January 2010 at 12:21pm

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

Forum Moderator, 5513 Posts

27 January 2010 at 1:11pm

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

Community Member, 26 Posts

28 January 2010 at 9:06am

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