From dba7c02a2cd9ee459b580c0cfd91cc3560c21e40 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Wed, 25 Dec 2013 11:55:47 -0500 Subject: [PATCH] Fixes #1610: `Html::activeCheckboxList()` and `Html::activeRadioList()` will submit an empty string if no checkbox/radio is selected --- framework/CHANGELOG.md | 3 ++- framework/yii/helpers/BaseHtml.php | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index d94011f..b6c56c6 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -32,7 +32,8 @@ Yii Framework 2 Change Log - Enh: Added `favicon.ico` and `robots.txt` to defauly application templates (samdark) - Enh: Added `Widget::autoIdPrefix` to support prefixing automatically generated widget IDs (qiangxue) - Enh: Support for file aliases in console command 'message' (omnilight) -- Enh: Sort and Paginiation can now create absolute URLs (cebe) +- Enh: Sort and Pagination can now create absolute URLs (cebe) +- Chg #1610: `Html::activeCheckboxList()` and `Html::activeRadioList()` will submit an empty string if no checkbox/radio is selected (qiangxue) - Chg: Renamed `yii\jui\Widget::clientEventsMap` to `clientEventMap` (qiangxue) - Chg: Renamed `ActiveRecord::getPopulatedRelations()` to `getRelatedRecords()` (qiangxue) - Chg: Renamed `attributeName` and `className` to `targetAttribute` and `targetClass` for `UniqueValidator` and `ExistValidator` (qiangxue) diff --git a/framework/yii/helpers/BaseHtml.php b/framework/yii/helpers/BaseHtml.php index 2cfcb15..49fe832 100644 --- a/framework/yii/helpers/BaseHtml.php +++ b/framework/yii/helpers/BaseHtml.php @@ -1281,7 +1281,8 @@ class BaseHtml * @param array $options options (name => config) for the checkbox list. The following options are specially handled: * * - unselect: string, the value that should be submitted when none of the checkboxes is selected. - * By setting this option, a hidden input will be generated. + * You may set this option to be null to prevent default value submission. + * If this option is not set, an empty string will be submitted. * - separator: string, the HTML code that separates items. * - item: callable, a callback that can be used to customize the generation of the HTML code * corresponding to a single item in $items. The signature of this callback must be: @@ -1300,7 +1301,7 @@ class BaseHtml $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute); $selection = static::getAttributeValue($model, $attribute); if (!array_key_exists('unselect', $options)) { - $options['unselect'] = '0'; + $options['unselect'] = ''; } if (!array_key_exists('id', $options)) { $options['id'] = static::getInputId($model, $attribute); @@ -1321,7 +1322,8 @@ class BaseHtml * @param array $options options (name => config) for the radio button list. The following options are specially handled: * * - unselect: string, the value that should be submitted when none of the radio buttons is selected. - * By setting this option, a hidden input will be generated. + * You may set this option to be null to prevent default value submission. + * If this option is not set, an empty string will be submitted. * - separator: string, the HTML code that separates items. * - item: callable, a callback that can be used to customize the generation of the HTML code * corresponding to a single item in $items. The signature of this callback must be: @@ -1340,7 +1342,7 @@ class BaseHtml $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute); $selection = static::getAttributeValue($model, $attribute); if (!array_key_exists('unselect', $options)) { - $options['unselect'] = '0'; + $options['unselect'] = ''; } if (!array_key_exists('id', $options)) { $options['id'] = static::getInputId($model, $attribute);