From 71f9df8e136cb15a49605749a629218171cb7eb7 Mon Sep 17 00:00:00 2001 From: Sam Georges Date: Sat, 11 Oct 2014 14:31:09 +1100 Subject: [PATCH] Use HTML to pass unchecked checkboxes/switches. Refs #648 --- modules/backend/widgets/Form.php | 9 +++------ .../backend/widgets/form/partials/_field_checkbox.htm | 2 +- modules/backend/widgets/form/partials/_field_switch.htm | 7 ++++++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/modules/backend/widgets/Form.php b/modules/backend/widgets/Form.php index 928144bc6..8efc7d7c6 100644 --- a/modules/backend/widgets/Form.php +++ b/modules/backend/widgets/Form.php @@ -693,12 +693,10 @@ class Form extends WidgetBase $data = []; /* - * Boolean fields (checkbox, switch) won't be present value FALSE * Number fields should be converted to integers */ foreach ($this->fields as $field) { - - if (!in_array($field->type, ['switch', 'checkbox', 'number'])) + if ($field->type != 'number') continue; /* @@ -706,11 +704,10 @@ class Form extends WidgetBase */ $parts = Str::evalHtmlArray($field->fieldName); $dotted = implode('.', $parts); - $value = array_get($data, $dotted, 0); - if ($field->type == 'number') { + if (($value = array_get($data, $dotted)) !== null) { $value = !strlen(trim($value)) ? null : (float) $value; + array_set($data, $dotted, $value); } - array_set($data, $dotted, $value); } /* diff --git a/modules/backend/widgets/form/partials/_field_checkbox.htm b/modules/backend/widgets/form/partials/_field_checkbox.htm index 5d91128aa..962501a34 100644 --- a/modules/backend/widgets/form/partials/_field_checkbox.htm +++ b/modules/backend/widgets/form/partials/_field_checkbox.htm @@ -4,7 +4,7 @@ type="hidden" name="getName() ?>" value="0" - previewMode ? 'disabled="disabled"' : '' ?>> + previewMode ? 'disabled="disabled"' : '' ?>> comment)) ?>

-