From b5b55ad3024bfcc47b3a6d4a770d8e2fdff7cbe7 Mon Sep 17 00:00:00 2001 From: Konstantin Timoshenko Date: Wed, 27 Jan 2016 21:44:08 +0300 Subject: [PATCH] Fixes #10631: Splitted gettng label and rendering cell in `yii\grid\DataColumn::renderHeaderCellContent()` to make code simpler --- framework/grid/Column.php | 12 +++++++++++- framework/grid/DataColumn.php | 22 ++++++++++++++++------ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/framework/grid/Column.php b/framework/grid/Column.php index 8978194bf9..a5e89f86fa 100644 --- a/framework/grid/Column.php +++ b/framework/grid/Column.php @@ -124,7 +124,17 @@ class Column extends Object */ protected function renderHeaderCellContent() { - return trim($this->header) !== '' ? $this->header : $this->grid->emptyCell; + return trim($this->header) !== '' ? $this->header : $this->getHeaderCellLabel(); + } + + /** + * Returns header cell label. + * This method may be overridden to customize the label of the header cell. + * @return string label + */ + protected function getHeaderCellLabel() + { + return $this->grid->emptyCell; } /** diff --git a/framework/grid/DataColumn.php b/framework/grid/DataColumn.php index 3b6b01bd5d..c93e5fb9c8 100644 --- a/framework/grid/DataColumn.php +++ b/framework/grid/DataColumn.php @@ -117,6 +117,21 @@ class DataColumn extends Column return parent::renderHeaderCellContent(); } + $label = $this->getHeaderCellLabel(); + + if ($this->attribute !== null && $this->enableSorting && + ($sort = $this->grid->dataProvider->getSort()) !== false && $sort->hasAttribute($this->attribute)) { + return $sort->link($this->attribute, array_merge($this->sortLinkOptions, ['label' => ($this->encodeLabel ? Html::encode($label) : $label)])); + } else { + return $this->encodeLabel ? Html::encode() : $label; + } + } + + /** + * @inheritdoc + */ + protected function getHeaderCellLabel() + { $provider = $this->grid->dataProvider; if ($this->label === null) { @@ -137,12 +152,7 @@ class DataColumn extends Column $label = $this->label; } - if ($this->attribute !== null && $this->enableSorting && - ($sort = $provider->getSort()) !== false && $sort->hasAttribute($this->attribute)) { - return $sort->link($this->attribute, array_merge($this->sortLinkOptions, ['label' => $this->encodeLabel ? Html::encode($label) : $label])); - } else { - return $this->encodeLabel ? Html::encode($label) : $label; - } + return $label; } /**