yii\data\BaseDataProvider::getSort PHP Method

getSort() public method

Returns the sorting object used by this data provider.
public getSort ( ) : Sort | boolean
return Sort | boolean the sorting object. If this is false, it means the sorting is disabled.
    public function getSort()
    {
        if ($this->_sort === null) {
            $this->setSort([]);
        }
        return $this->_sort;
    }

Usage Example

 /**
  * @param string $id The id of the widget
  * @param \yii\data\BaseDataProvider $dataProvider The dataprovider for the widget
  * @param \Closure $filter The filter to manipulate the data.
  * @return array The data required to create the list and pagination.
  */
 protected static function getData($id, $dataProvider, $filter)
 {
     $data = ['id' => $id];
     $data['count'] = $dataProvider->getCount();
     if (($pagination = $dataProvider->getPagination()) !== false) {
         $data['totalCount'] = $dataProvider->getTotalCount();
         $data['begin'] = $pagination->getPage() * $pagination->pageSize + 1;
         $data['end'] = $data['begin'] + $data['count'] - 1;
         if ($data['begin'] > $data['end']) {
             $data['begin'] = $data['end'];
         }
         $data['page'] = $pagination->getPage() + 1;
         $data['pageCount'] = $pagination->pageCount;
     } else {
         $data['totalCount'] = $dataProvider->getTotalCount();
         $data['pageCount'] = 1;
         $data['page'] = 1;
         $data['begin'] = $data['page'] = $data['pageCount'] = 1;
         $data['end'] = $data['totalCount'] = $data['count'];
     }
     $pagination = $dataProvider->getPagination();
     if ($pagination !== false) {
         $data['pageParam'] = $pagination->pageParam;
         $data['pageSizeParam'] = $pagination->pageSizeParam;
         $data['pageSizeLimit'] = $pagination->pageSizeLimit;
         $data['pageLinks'] = $pagination->getLinks();
         $currentPage = $pagination->getPage();
         $pageCount = $pagination->getPageCount();
         $maxButtonCount = 10;
         $beginPage = max(0, $currentPage - (int) ($maxButtonCount / 2));
         if (($endPage = $beginPage + $maxButtonCount - 1) >= $pageCount) {
             $endPage = $pageCount - 1;
             $beginPage = max(0, $endPage - $maxButtonCount + 1);
         }
         for ($i = $beginPage; $i <= $endPage; $i++) {
             $data['pages'][] = ['pageNo' => $i + 1, 'pageUrl' => $pagination->createUrl($i)];
         }
     }
     $sort = $dataProvider->getSort();
     if (!($sort === false || empty($sort->attributes) || $dataProvider->getCount() <= 0)) {
         $attributes = array_keys($sort->attributes);
         $data['sort'] = [];
         foreach ($attributes as $name) {
             $data['sort'][] = ['name' => $name, 'link' => $sort->createUrl($name)];
         }
     }
     $models = $dataProvider->getModels();
     if ($models) {
         $data['labels'] = $models[0]->attributeLabels();
     }
     $controller = Yii::$app->controller->id;
     foreach ($models as $key => $model) {
         $data['items'][$key] = $filter ? $filter($model) : $model->attributes;
         $data['items'][$key]['actions'] = ['viewUrl' => BaseUrl::toRoute(["{$controller}/view", 'id' => $model->primaryKey]), 'viewTitle' => Yii::t('app', 'View'), 'updateUrl' => BaseUrl::toRoute(["{$controller}/update", 'id' => $model->primaryKey]), 'updateTitle' => Yii::t('app', 'Update'), 'deleteUrl' => BaseUrl::toRoute(["{$controller}/delete", 'id' => $model->primaryKey]), 'deleteTitle' => Yii::t('app', 'Delete')];
     }
     return $data;
 }