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

Set default value for OptionsetField


2 Posts   2676 Views


Community Member, 80 Posts

25 May 2009 at 7:10pm

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!


Community Member, 4 Posts

30 December 2011 at 12:26pm

Edited: 30/12/2011 12:29pm

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