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.

Form Questions

Set default value for OptionsetField


Reply

2 Posts   2558 Views

Avatar
Ben_W

25 May 2009 at 7:10pm Community Member, 80 Posts

I have the following code in one of my forms for the backend cms, it seems that $source will only take numeric array, not associative array.
original code:
$myMediaType = new OptionsetField(
                   $name = "MediaType",
                   $title = "Media Type",
                   $source = array(
                      "Video" => "Video",
                      "Audio" => "Audio"
                   ),
                   $value = "Video"
                  );
      $fields->addFieldToTab('Root.Content.Main', $myMediaType, 'Content');   

this will not work, but if I change the $source to a numeric array, it will set the default value.

$myMediaType = new OptionsetField(
                   $name = "MediaType",
                   $title = "Media Type",
                   $source = array("Video", "Audio"),
                   $value = 0
                  );
      $fields->addFieldToTab('Root.Content.Main', $myMediaType, 'Content');

Does anyone come cross this problem, I would prefer to store string 'Video', 'Audio' into the database rather than integer. Could someone please point me the right direction? Thank you!

Avatar
mikhail

30 December 2011 at 12:26pm (Last edited: 30 December 2011 12:29pm), Community Member, 4 Posts

Old thread, but I'm having the same problem. Resorted to storing int and using a numeric array as source.
Would still prefer to store a string.

If using associative array, on first load the OptionsetField marks no default. On page refresh, it correctly marks the db value.

...Class PieHolder...

public static $db = array(
'Pie' => "Enum('Pie1, Pie2, Pie3')"
)

...Form Constructor...

new OptionsetField('Pie', 'Pie', $PieHolder->dbObject('Pie')->enumValues(), $PieHolder->Pie);

=== no default marked on first load