diff --git a/framework/helpers/base/Html.php b/framework/helpers/base/Html.php index e89e197..03976a3 100644 --- a/framework/helpers/base/Html.php +++ b/framework/helpers/base/Html.php @@ -609,7 +609,6 @@ class Html * Generates a radio button input. * @param string $name the name attribute. * @param boolean $checked whether the radio button should be checked. - * @param string $value the value attribute. If it is null, the value attribute will not be rendered. * @param array $options the tag options in terms of name-value pairs. The following options are specially handled: * * - uncheck: string, the value associated with the uncheck state of the radio button. When this attribute @@ -621,10 +620,10 @@ class Html * * @return string the generated radio button tag */ - public static function radio($name, $checked = false, $value = '1', $options = array()) + public static function radio($name, $checked = false, $options = array()) { $options['checked'] = $checked; - $options['value'] = $value; + $value = array_key_exists('value', $options) ? $options['value'] : '1'; if (isset($options['uncheck'])) { // add a hidden field so that if the radio button is not selected, it still submits a value $hidden = static::hiddenInput($name, $options['uncheck']); @@ -639,7 +638,6 @@ class Html * Generates a checkbox input. * @param string $name the name attribute. * @param boolean $checked whether the checkbox should be checked. - * @param string $value the value attribute. If it is null, the value attribute will not be rendered. * @param array $options the tag options in terms of name-value pairs. The following options are specially handled: * * - uncheck: string, the value associated with the uncheck state of the checkbox. When this attribute @@ -651,10 +649,10 @@ class Html * * @return string the generated checkbox tag */ - public static function checkbox($name, $checked = false, $value = '1', $options = array()) + public static function checkbox($name, $checked = false, $options = array()) { $options['checked'] = $checked; - $options['value'] = $value; + $value = array_key_exists('value', $options) ? $options['value'] : '1'; if (isset($options['uncheck'])) { // add a hidden field so that if the checkbox is not selected, it still submits a value $hidden = static::hiddenInput($name, $options['uncheck']); @@ -806,7 +804,7 @@ class Html if ($formatter !== null) { $lines[] = call_user_func($formatter, $index, $label, $name, $checked, $value); } else { - $lines[] = static::label(static::checkbox($name, $checked, $value) . ' ' . $label); + $lines[] = static::label(static::checkbox($name, $checked, array('value' => $value)) . ' ' . $label); } $index++; } @@ -860,7 +858,7 @@ class Html if ($formatter !== null) { $lines[] = call_user_func($formatter, $index, $label, $name, $checked, $value); } else { - $lines[] = static::label(static::radio($name, $checked, $value) . ' ' . $label); + $lines[] = static::label(static::radio($name, $checked, array('value' => $value)) . ' ' . $label); } $index++; } @@ -1013,7 +1011,6 @@ class Html * @param Model $model the model object * @param string $attribute the attribute name or expression. See [[getAttributeName()]] for the format * about attribute expression. - * @param string $value the value tag attribute. If it is null, the value attribute will not be rendered. * @param array $options the tag options in terms of name-value pairs. The following options are specially handled: * * - uncheck: string, the value associated with the uncheck state of the radio button. If not set, @@ -1026,17 +1023,17 @@ class Html * * @return string the generated radio button tag */ - public static function activeRadio($model, $attribute, $value = '1', $options = array()) + public static function activeRadio($model, $attribute, $options = array()) { $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute); $checked = static::getAttributeValue($model, $attribute); if (!array_key_exists('uncheck', $options)) { - $options['unchecked'] = '0'; + $options['uncheck'] = '0'; } if (!array_key_exists('id', $options)) { $options['id'] = static::getInputId($model, $attribute); } - return static::radio($name, $checked, $value, $options); + return static::radio($name, $checked, $options); } /** @@ -1046,7 +1043,6 @@ class Html * @param Model $model the model object * @param string $attribute the attribute name or expression. See [[getAttributeName()]] for the format * about attribute expression. - * @param string $value the value tag attribute. If it is null, the value attribute will not be rendered. * @param array $options the tag options in terms of name-value pairs. The following options are specially handled: * * - uncheck: string, the value associated with the uncheck state of the radio button. If not set, @@ -1059,17 +1055,17 @@ class Html * * @return string the generated checkbox tag */ - public static function activeCheckbox($model, $attribute, $value = '1', $options = array()) + public static function activeCheckbox($model, $attribute, $options = array()) { $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute); $checked = static::getAttributeValue($model, $attribute); if (!array_key_exists('uncheck', $options)) { - $options['unchecked'] = '0'; + $options['uncheck'] = '0'; } if (!array_key_exists('id', $options)) { $options['id'] = static::getInputId($model, $attribute); } - return static::checkbox($name, $checked, $value, $options); + return static::checkbox($name, $checked, $options); } /** @@ -1468,7 +1464,7 @@ class Html */ public static function getInputId($model, $attribute) { - $name = static::getInputName($model, $attribute); + $name = strtolower(static::getInputName($model, $attribute)); return str_replace(array('[]', '][', '[', ']', ' '), array('', '-', '-', '', '-'), $name); } diff --git a/tests/unit/framework/helpers/HtmlTest.php b/tests/unit/framework/helpers/HtmlTest.php index a3d0e65..6011594 100644 --- a/tests/unit/framework/helpers/HtmlTest.php +++ b/tests/unit/framework/helpers/HtmlTest.php @@ -230,15 +230,15 @@ class HtmlTest extends \yii\test\TestCase public function testRadio() { $this->assertEquals('', Html::radio('test')); - $this->assertEquals('', Html::radio('test', true, null, array('class' => 'a'))); - $this->assertEquals('', Html::radio('test', true, 2, array('class' => 'a' , 'uncheck' => '0'))); + $this->assertEquals('', Html::radio('test', true, array('class' => 'a', 'value' => null))); + $this->assertEquals('', Html::radio('test', true, array('class' => 'a' , 'uncheck' => '0', 'value' => 2))); } public function testCheckbox() { $this->assertEquals('', Html::checkbox('test')); - $this->assertEquals('', Html::checkbox('test', true, null, array('class' => 'a'))); - $this->assertEquals('', Html::checkbox('test', true, 2, array('class' => 'a', 'uncheck' => '0'))); + $this->assertEquals('', Html::checkbox('test', true, array('class' => 'a', 'value' => null))); + $this->assertEquals('', Html::checkbox('test', true, array('class' => 'a', 'uncheck' => '0', 'value' => 2))); } public function testDropDownList() @@ -347,7 +347,7 @@ EOD; EOD; $this->assertEqualsWithoutLE($expected, Html::checkboxList('test', array('value2'), $this->getDataItems(), array( 'item' => function ($index, $label, $name, $checked, $value) { - return $index . Html::label($label . ' ' . Html::checkbox($name, $checked, $value)); + return $index . Html::label($label . ' ' . Html::checkbox($name, $checked, array('value' => $value))); } ))); } @@ -383,7 +383,7 @@ EOD; EOD; $this->assertEqualsWithoutLE($expected, Html::radioList('test', array('value2'), $this->getDataItems(), array( 'item' => function ($index, $label, $name, $checked, $value) { - return $index . Html::label($label . ' ' . Html::radio($name, $checked, $value)); + return $index . Html::label($label . ' ' . Html::radio($name, $checked, array('value' => $value))); } ))); }