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="= $field->getName() ?>"
value="0"
- = $this->previewMode ? 'disabled="disabled"' : '' ?>>
+ = $this->previewMode ? 'disabled="disabled"' : '' ?>>
= e(trans($field->comment)) ?>
-