From 3838208cbc2e02c7a7b435bb6a21e3c2ab6ceaac Mon Sep 17 00:00:00 2001 From: Fabrizio Caldarelli Date: Wed, 28 Feb 2018 10:25:14 +0100 Subject: [PATCH 1/5] Fixed has-error class to ActiveField div container when attribute name is tabular --- framework/CHANGELOG.md | 4 +--- framework/widgets/ActiveField.php | 5 ++++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 7c3f3d6..f65ea68 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,6 +4,7 @@ Yii Framework 2 Change Log 2.0.14.2 under development ------------------------ +- Bug #15801: Fixed has-error class to ActiveField div container when attribute name is tabular (FabrizioCaldarelli) - Bug #15792: Added missing `yii\db\QueryBuilder::conditionClasses` setter (silverfire) @@ -2131,6 +2132,3 @@ Yii Framework 2 Change Log - [Smarty View Renderer](https://github.com/yiisoft/yii2-smarty) - [Twig View Renderer](https://github.com/yiisoft/yii2-twig) - - - diff --git a/framework/widgets/ActiveField.php b/framework/widgets/ActiveField.php index 0a220d8..c1d6b04 100644 --- a/framework/widgets/ActiveField.php +++ b/framework/widgets/ActiveField.php @@ -930,7 +930,10 @@ class ActiveField extends Component */ protected function addErrorClassIfNeeded(&$options) { - if ($this->model->hasErrors($this->attribute)) { + // Get proper attribute name when attribute name is tabular. + $attributeName = yii\helpers\BaseHtml::getAttributeName($this->attribute); + + if ($this->model->hasErrors($attributeName)) { Html::addCssClass($options, $this->form->errorCssClass); } } From 12afecf9cee9912ee66de7a040efecad0c04f3c1 Mon Sep 17 00:00:00 2001 From: Fabrizio Date: Thu, 1 Mar 2018 00:04:04 +0100 Subject: [PATCH 2/5] Added test to check has-error class on tabular input --- tests/framework/widgets/ActiveFieldTest.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/framework/widgets/ActiveFieldTest.php b/tests/framework/widgets/ActiveFieldTest.php index 26c6f01..daf346c 100644 --- a/tests/framework/widgets/ActiveFieldTest.php +++ b/tests/framework/widgets/ActiveFieldTest.php @@ -247,6 +247,17 @@ EOT; $this->assertEquals($expectedValue, $this->activeField->parts['{label}']); } + public function testTabularInputErrors() + { + $this->activeField->attribute = '[0]'.$this->attributeName; + $this->helperModel->addError($this->attributeName, 'Error Message'); + + $expectedValue = '
'; + $actualValue = $this->activeField->begin(); + + $this->assertEquals($expectedValue, $actualValue); + } + public function hintDataProvider() { return [ From d0a6302b375a6cfa9dd9023e6dba12bd1c160e31 Mon Sep 17 00:00:00 2001 From: Fabrizio Caldarelli Date: Thu, 1 Mar 2018 08:05:25 +0100 Subject: [PATCH 3/5] Update ActiveField.php Used Html instead BaseHtml --- framework/widgets/ActiveField.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/widgets/ActiveField.php b/framework/widgets/ActiveField.php index c1d6b04..9fc870e 100644 --- a/framework/widgets/ActiveField.php +++ b/framework/widgets/ActiveField.php @@ -931,7 +931,7 @@ class ActiveField extends Component protected function addErrorClassIfNeeded(&$options) { // Get proper attribute name when attribute name is tabular. - $attributeName = yii\helpers\BaseHtml::getAttributeName($this->attribute); + $attributeName = yii\helpers\Html::getAttributeName($this->attribute); if ($this->model->hasErrors($attributeName)) { Html::addCssClass($options, $this->form->errorCssClass); From cdcbb7575a0c5ff60a708036b5989d9a5222dc6f Mon Sep 17 00:00:00 2001 From: Dmitry Naumenko Date: Thu, 1 Mar 2018 09:55:43 +0200 Subject: [PATCH 4/5] Simlified FQCN [skip ci] --- framework/widgets/ActiveField.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/widgets/ActiveField.php b/framework/widgets/ActiveField.php index 9fc870e..381aaeb 100644 --- a/framework/widgets/ActiveField.php +++ b/framework/widgets/ActiveField.php @@ -931,7 +931,7 @@ class ActiveField extends Component protected function addErrorClassIfNeeded(&$options) { // Get proper attribute name when attribute name is tabular. - $attributeName = yii\helpers\Html::getAttributeName($this->attribute); + $attributeName = Html::getAttributeName($this->attribute); if ($this->model->hasErrors($attributeName)) { Html::addCssClass($options, $this->form->errorCssClass); From 9c6fa01adb7077d12c8b98afa8ad2d529893f10e Mon Sep 17 00:00:00 2001 From: Dmitry Naumenko Date: Thu, 1 Mar 2018 09:58:31 +0200 Subject: [PATCH 5/5] Update CHANGELOG [skip ci] --- framework/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index f65ea68..a64781c 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,7 +4,7 @@ Yii Framework 2 Change Log 2.0.14.2 under development ------------------------ -- Bug #15801: Fixed has-error class to ActiveField div container when attribute name is tabular (FabrizioCaldarelli) +- Bug #15801: Fixed `has-error` CSS class assignment in `yii\widgets\ActiveField` when attribute name is prefixed with tabular index (FabrizioCaldarelli) - Bug #15792: Added missing `yii\db\QueryBuilder::conditionClasses` setter (silverfire)