|
|
|
@ -9,6 +9,8 @@ namespace yii\data;
|
|
|
|
|
|
|
|
|
|
use Yii; |
|
|
|
|
use yii\base\InvalidConfigException; |
|
|
|
|
use yii\base\InvalidParamException; |
|
|
|
|
use yii\base\Model; |
|
|
|
|
use yii\db\Query; |
|
|
|
|
use yii\db\ActiveQuery; |
|
|
|
|
use yii\db\Connection; |
|
|
|
@ -214,4 +216,34 @@ class ActiveDataProvider extends DataProvider
|
|
|
|
|
$this->_totalCount = null; |
|
|
|
|
$this->_keys = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Sets the sort definition for this data provider. |
|
|
|
|
* @param array|Sort|boolean $value the sort definition to be used by this data provider. |
|
|
|
|
* This can be one of the following: |
|
|
|
|
* |
|
|
|
|
* - a configuration array for creating the sort definition object. The "class" element defaults |
|
|
|
|
* to 'yii\data\Sort' |
|
|
|
|
* - an instance of [[Sort]] or its subclass |
|
|
|
|
* - false, if sorting needs to be disabled. |
|
|
|
|
* |
|
|
|
|
* @throws InvalidParamException |
|
|
|
|
*/ |
|
|
|
|
public function setSort($value) |
|
|
|
|
{ |
|
|
|
|
parent::setSort($value); |
|
|
|
|
if (($sort = $this->getSort()) !== false && empty($sort->attributes) && |
|
|
|
|
$this->query instanceof ActiveQuery) { |
|
|
|
|
|
|
|
|
|
/** @var Model $model */ |
|
|
|
|
$model = new $this->query->modelClass; |
|
|
|
|
foreach($model->attributes() as $attribute) { |
|
|
|
|
$sort->attributes[$attribute] = array( |
|
|
|
|
'asc' => array($attribute => Sort::ASC), |
|
|
|
|
'desc' => array($attribute => Sort::DESC), |
|
|
|
|
'label' => $model->getAttributeLabel($attribute), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|