mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-19 07:50:39 +08:00
Refactor DataColum to use model label for sorting link
This commit is contained in:
@@ -62,25 +62,33 @@ class DataColumn extends Column
|
|||||||
if ($this->attribute !== null && $this->header === null) {
|
if ($this->attribute !== null && $this->header === null) {
|
||||||
$provider = $this->grid->dataProvider;
|
$provider = $this->grid->dataProvider;
|
||||||
if ($this->enableSorting && ($sort = $provider->getSort()) !== false && $sort->hasAttribute($this->attribute)) {
|
if ($this->enableSorting && ($sort = $provider->getSort()) !== false && $sort->hasAttribute($this->attribute)) {
|
||||||
|
if (!isset($sort->attributes[$this->attribute]['label'])) {
|
||||||
|
$sort->attributes[$this->attribute]['label'] = $this->getHeaderLabel();
|
||||||
|
}
|
||||||
return $sort->link($this->attribute);
|
return $sort->link($this->attribute);
|
||||||
}
|
}
|
||||||
$models = $provider->getModels();
|
return $this->getHeaderLabel();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Inflector::camel2words($this->attribute);
|
|
||||||
} else {
|
} else {
|
||||||
return parent::renderHeaderCellContent();
|
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()
|
protected function renderFilterCellContent()
|
||||||
{
|
{
|
||||||
if (is_string($this->filter)) {
|
if (is_string($this->filter)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user