summaryrefslogtreecommitdiff
path: root/modules/field/modules/options/options.module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/field/modules/options/options.module')
-rw-r--r--modules/field/modules/options/options.module17
1 files changed, 12 insertions, 5 deletions
diff --git a/modules/field/modules/options/options.module b/modules/field/modules/options/options.module
index 743d92454..9fc8b9223 100644
--- a/modules/field/modules/options/options.module
+++ b/modules/field/modules/options/options.module
@@ -131,13 +131,20 @@ function options_buttons_elements_process($element, &$form_state, $form) {
$options = options_options($field, $instance);
$multiple = isset($element['#multiple']) ? $element['#multiple'] : $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
- $value = array();
- foreach ($element['#value'][$field_key] as $key) {
- // Multiple (checkboxes) need the default value in the form of an array.
+ // Incoming #value is an array (checkboxes) or integer (radios).
+ $keys = $element['#value'][$field_key];
+ if (!is_array($keys)) {
+ $keys = array($keys);
+ }
+
+ // Multiple (checkboxes) need #default_value to be an array, and
+ // non-multiple (radios) need a single default value. If #value is
+ // empty we loop won't run, so initialize $value to the right type.
+ $value = $multiple ? array() : '';
+ foreach ($keys as $key) {
if ($multiple) {
- $value[$key] = 1;
+ $value[] = $key;
}
- // Non-multiple (radios) need single default value.
else {
$value = $key;
break;