From 8334ab3060dc97fac87c1fb176ce6d92be175e80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Jankowiak?= Date: Mon, 19 Nov 2018 23:12:17 +0100 Subject: [PATCH] Fixes #16629: ActiveField::inputOptions were not merged with options passed for radio and checkbox --- framework/CHANGELOG.md | 1 + framework/widgets/ActiveField.php | 4 ++ tests/framework/widgets/ActiveFieldTest.php | 79 ++++++++++++++++++++- 3 files changed, 83 insertions(+), 1 deletion(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index fa67dea0ff..defcfeedf4 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,6 +4,7 @@ Yii Framework 2 Change Log 2.0.16 under development ------------------------ +- Bug #16629: ActiveField::inputOptions were not merged with options passed for radio and checkbox (paweljankowiak06) - Bug #16648: Html::strtolower() was corrupting UTF-8 strings (Kolyunya) - Bug #13977: Skip validation if file input does not exist (RobinKamps, s1lver) - Bug #16183: Fixed when `yii\helpers\BaseFileHelper` sometimes returned wrong value (samdark, SilverFire, OndrejVasicek) diff --git a/framework/widgets/ActiveField.php b/framework/widgets/ActiveField.php index cf23b8c007..40ee34e778 100644 --- a/framework/widgets/ActiveField.php +++ b/framework/widgets/ActiveField.php @@ -542,6 +542,8 @@ class ActiveField extends Component */ public function radio($options = [], $enclosedByLabel = true) { + $options = array_merge($this->inputOptions, $options); + if ($enclosedByLabel) { $this->parts['{input}'] = Html::activeRadio($this->model, $this->attribute, $options); $this->parts['{label}'] = ''; @@ -594,6 +596,8 @@ class ActiveField extends Component */ public function checkbox($options = [], $enclosedByLabel = true) { + $options = array_merge($this->inputOptions, $options); + if ($enclosedByLabel) { $this->parts['{input}'] = Html::activeCheckbox($this->model, $this->attribute, $options); $this->parts['{label}'] = ''; diff --git a/tests/framework/widgets/ActiveFieldTest.php b/tests/framework/widgets/ActiveFieldTest.php index 9b3d32b5ec..8b675dc878 100644 --- a/tests/framework/widgets/ActiveFieldTest.php +++ b/tests/framework/widgets/ActiveFieldTest.php @@ -249,7 +249,7 @@ EOT; public function testTabularInputErrors() { - $this->activeField->attribute = '[0]'.$this->attributeName; + $this->activeField->attribute = '[0]' . $this->attributeName; $this->helperModel->addError($this->attributeName, 'Error Message'); $expectedValue = '
'; @@ -584,6 +584,78 @@ HTML; $this->assertEqualsWithoutLE($expectedValue, trim($actualValue)); } + public function testInputOptionsAreMergedFromActiveField() + { + $this->removeLabelHintAndError(); + $expectedValue = ''; + $field = $this->activeField->input('text', ['data-id' => 3])->render(); + self::assertContains($expectedValue, $field); + } + + public function testTextInputOptionsAreMergedFromActiveField() + { + $this->removeLabelHintAndError(); + $expectedValue = ''; + $field = $this->activeField->textInput(['data-id' => 3])->render(); + self::assertContains($expectedValue, $field); + } + + public function testHiddenInputOptionsAreMergedFromActiveField() + { + $this->removeLabelHintAndError(); + $expectedValue = ''; + $field = $this->activeField->hiddenInput(['data-id' => 3])->render(); + self::assertContains($expectedValue, $field); + } + + public function testPasswordInputOptionsAreMergedFromActiveField() + { + $this->removeLabelHintAndError(); + $expectedValue = ''; + $field = $this->activeField->passwordInput(['data-id' => 3])->render(); + self::assertContains($expectedValue, $field); + } + + public function testTextareaInputOptionsAreMergedFromActiveField() + { + $this->removeLabelHintAndError(); + $expectedValue = '