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

Set default value for OptionsetField


Go to End
Reply


2 Posts   3103 Views

Avatar
Ben_W

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!

Avatar
mikhail

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