Use HTML to pass unchecked checkboxes/switches. Refs #648

This commit is contained in:
Sam Georges 2014-10-11 14:31:09 +11:00
parent 182bb01167
commit 71f9df8e13
3 changed files with 10 additions and 8 deletions

View File

@ -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);
}
/*

View File

@ -4,7 +4,7 @@
type="hidden"
name="<?= $field->getName() ?>"
value="0"
<?= $this->previewMode ? 'disabled="disabled"' : '' ?>>
<?= $this->previewMode ? 'disabled="disabled"' : '' ?>>
<input
type="checkbox"
id="<?= $field->getId() ?>"

View File

@ -5,7 +5,12 @@
<p class="help-block"><?= e(trans($field->comment)) ?></p>
<?php endif ?>
</div>
<label class="custom-switch" onclick="">
<label class="custom-switch">
<input
type="hidden"
name="<?= $field->getName() ?>"
value="0"
<?= $this->previewMode ? 'disabled="disabled"' : '' ?>>
<input
type="checkbox"
id="<?= $field->getId() ?>"