yii\data\BaseDataProvider::setSort PHP Method

setSort() public method

Sets the sort definition for this data provider.
public setSort ( array | Sort | boolean $value )
$value array | Sort | boolean 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.
    public function setSort($value)
    {
        if (is_array($value)) {
            $config = ['class' => Sort::className()];
            if ($this->id !== null) {
                $config['sortParam'] = $this->id . '-sort';
            }
            $this->_sort = Yii::createObject(array_merge($config, $value));
        } elseif ($value instanceof Sort || $value === false) {
            $this->_sort = $value;
        } else {
            throw new InvalidParamException('Only Sort instance, configuration array or false is allowed.');
        }
    }

Usage Example

 public function setSort($value)
 {
     parent::setSort($value);
     if (($sort = $this->getSort()) !== false && empty($sort->attributes)) {
         /** @var Model $model */
         $model = new $this->modelClass();
         if ($model instanceof Model) {
             foreach ($model->attributes() as $attribute) {
                 $sort->attributes[$attribute] = ['asc' => [$attribute => SORT_ASC], 'desc' => [$attribute => SORT_DESC], 'label' => $model->getAttributeLabel($attribute)];
             }
         }
     }
 }
All Usage Examples Of yii\data\BaseDataProvider::setSort