diff --git a/framework/yii/grid/DataColumn.php b/framework/yii/grid/DataColumn.php index d31507d..ed6e803 100644 --- a/framework/yii/grid/DataColumn.php +++ b/framework/yii/grid/DataColumn.php @@ -62,25 +62,33 @@ class DataColumn extends Column if ($this->attribute !== null && $this->header === null) { $provider = $this->grid->dataProvider; if ($this->enableSorting && ($sort = $provider->getSort()) !== false && $sort->hasAttribute($this->attribute)) { - return $sort->link($this->attribute); - } - $models = $provider->getModels(); - if (($model = reset($models)) instanceof Model) { - /** @var Model $model */ - return $model->getAttributeLabel($this->attribute); - } elseif ($provider instanceof ActiveDataProvider) { - if ($provider->query instanceof ActiveQuery) { - /** @var Model $model */ - $model = new $provider->query->modelClass; - return $model->getAttributeLabel($this->attribute); + if (!isset($sort->attributes[$this->attribute]['label'])) { + $sort->attributes[$this->attribute]['label'] = $this->getHeaderLabel(); } + return $sort->link($this->attribute); } - return Inflector::camel2words($this->attribute); + return $this->getHeaderLabel(); } else { return parent::renderHeaderCellContent(); } } + protected function getHeaderLabel() + { + $provider = $this->grid->dataProvider; + if ($provider instanceof ActiveDataProvider && $provider->query instanceof ActiveQuery) { + /** @var Model $model */ + $model = new $provider->query->modelClass; + return $model->getAttributeLabel($this->attribute); + } + $models = $provider->getModels(); + if (($model = reset($models)) instanceof Model) { + /** @var Model $model */ + return $model->getAttributeLabel($this->attribute); + } + return Inflector::camel2words($this->attribute); + } + protected function renderFilterCellContent() { if (is_string($this->filter)) {