Spec-Zone.ru › Yii 2.0

Класс yii\data\Sort

Все классы | Свойства | Методы
Наследование yii\data\Sort » yii\base\Object
Реализует yii\base\Configurable
Доступно с версии 2.0
Исходный код https://github.com/yiisoft/yii2/blob/master/framework/data/Sort.php

Sort представляет информацию, относящуюся к сортировке.

Когда данные нужно отсортировать по одному или нескольким атрибутам, мы можем использовать Sort для представления информации о сортировке и генерации соответствующих гиперссылок, которые могут привести к действиям сортировки.

Типичный пример использования:

public function actionIndex()
{
    $sort = new Sort([
        'attributes' => [
            'age',
            'name' => [
                'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
                'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
                'default' => SORT_DESC,
                'label' => 'Name',
            ],
        ],
    ]);

    $models = Article::find()
        ->where(['status' => 1])
        ->orderBy($sort->orders)
        ->all();

    return $this->render('index', [
         'models' => $models,
         'sort' => $sort,
    ]);
}

Представление:

// display links leading to sort actions
echo $sort->link('name') . ' | ' . $sort->link('age');

foreach ($models as $model) {
    // display $model here
}

В примере выше мы объявляем два $attributes, поддерживающих сортировку: name и age. Мы передаем информацию о сортировке в запрос Article, чтобы результаты запроса были отсортированы в порядке, указанном объектом Sort. В представлении мы отображаем две гиперссылки, которые могут привести к страницам с данными, отсортированными по соответствующим атрибутам.

Для получения более подробной информации и сведений об использовании Sort, см. статью руководства по сортировке.

Свойства Public

Свойство Тип Описание Определено
$attributeOrders массив Направления сортировки, индексированные по именам атрибутов. yii\data\Sort
$attributes массив Список атрибутов, которые могут быть отсортированы. yii\data\Sort
$defaultOrder массив Порядок, который должен быть использован, если текущий запрос не указывает никакого порядка. yii\data\Sort
$enableMultiSort логическое значение Может ли сортировка применяться к нескольким атрибутам одновременно. yii\data\Sort
$orders массив Столбцы (ключи) и соответствующие им направления сортировки (значения). yii\data\Sort
$params массив Параметры (имя => значение), которые должны использоваться для получения текущих направлений сортировки и создания новых URL сортировки. yii\data\Sort
$route строка Путь действия контроллера для отображения отсортированного содержимого. yii\data\Sort
$separator строка Символ, используемый для разделения различных атрибутов, которые необходимо отсортировать. yii\data\Sort
$sortParam строка Имя параметра, указывающего, какие атрибуты и в каком направлении сортировать. yii\data\Sort
$urlManager yii\web\UrlManager Менеджер URL, используемый для создания URL сортировки. yii\data\Sort

Методы Public

Метод Описание Определено
__call() Вызывает именованный метод, который не является методом класса. yii\base\Object
__construct() Конструктор. yii\base\Object
__get() Возвращает значение свойства объекта. yii\base\Object
__isset() Проверяет, установлено ли свойство, т.е. определено и не равно null. yii\base\Object
__set() Устанавливает значение свойства объекта. yii\base\Object
__unset() Устанавливает свойство объекта в значение null. yii\base\Object
canGetProperty() Возвращает значение, указывающее, может ли свойство быть прочитано. yii\base\Object
canSetProperty() Возвращает значение, указывающее, может ли свойство быть установлено. yii\base\Object
className() Возвращает полное имя этого класса. yii\base\Object
createSortParam() Создает переменную сортировки для указанного атрибута. yii\data\Sort
createUrl() Создает URL для сортировки данных по указанному атрибуту. yii\data\Sort
getAttributeOrder() Возвращает направление сортировки указанного атрибута в текущем запросе. yii\data\Sort
getAttributeOrders() Возвращает текущую запрошенную информацию о сортировке. yii\data\Sort
getOrders() Возвращает столбцы и соответствующие им направления сортировки. yii\data\Sort
hasAttribute() Возвращает значение, указывающее, поддерживает ли определение сортировки сортировку по указанному атрибуту. yii\data\Sort
hasMethod() Возвращает значение, указывающее, определен ли метод. yii\base\Object
hasProperty() Возвращает значение, указывающее, определено ли свойство. yii\base\Object
init() Нормализует свойство $attributes. yii\data\Sort
link() Генерирует гиперссылку, которая ведет к действию сортировки по указанному атрибуту. yii\data\Sort
setAttributeOrders() Устанавливает текущую информацию о сортировке. yii\data\Sort

Методы Protected

Метод Описание Определено
parseSortParam() Разбирает значение $sortParam в массив атрибутов сортировки. yii\data\Sort

Подробное описание свойств

$attributeOrders свойство public

Направления сортировки, индексированные по именам атрибутов. Направление сортировки может быть SORT_ASC для возрастания или SORT_DESC для убывания.

public array getAttributeOrders ( $recalculate = false )
public void setAttributeOrders ( $attributeOrders, $validate = true )

$attributes свойство public

Список атрибутов, которые могут быть отсортированы. Его синтаксис можно описать на следующем примере:

[
    'age',
    'name' => [
        'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
        'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
        'default' => SORT_DESC,
        'label' => 'Name',
    ],
]

В примере выше объявлены два атрибута: age и name. Атрибут age - это простой атрибут, эквивалентный следующему:

'age' => [
    'asc' => ['age' => SORT_ASC],
    'desc' => ['age' => SORT_DESC],
    'default' => SORT_ASC,
    'label' => Inflector::camel2words('age'),
]

Начиная с версии 2.0.12, конкретное направление сортировки также может быть указано в виде прямого выражения сортировки, как показано ниже:

'name' => [
    'asc' => '[[last_name]] ASC NULLS FIRST', // PostgreSQL specific feature
    'desc' => '[[last_name]] DESC NULLS LAST',
]

Атрибут name - это составной атрибут:

  • Ключ name представляет имя атрибута, которое будет отображаться в URL-адресах, ведущих к действиям сортировки.
  • Элементы asc и desc указывают, как сортировать по атрибуту в порядке возрастания и убывания соответственно. Их значения представляют фактические столбцы и направления, по которым должны быть отсортированы данные.
  • Элемент default указывает направление сортировки атрибута, если он не отсортирован (по умолчанию - возрастание).
  • Элемент label указывает метку, которая должна использоваться при вызове link() для создания ссылки сортировки. Если не указано, будет вызван yii\helpers\Inflector::camel2words() для получения метки. Обратите внимание, что она не будет закодирована в HTML.

Обратите внимание, что если объект Sort уже создан, вы можете использовать только полный формат для настройки каждого атрибута. Каждый атрибут должен включать эти элементы: asc и desc.

public array $attributes = []

$defaultOrder открытое свойство

Порядок, который следует использовать, когда текущий запрос не указывает никакого порядка. Ключи массива — имена атрибутов, а значения массива — соответствующие направления сортировки. Например,

[
    'name' => SORT_ASC,
    'created_at' => SORT_DESC,
]

См. также $attributeOrders.

public array $defaultOrder = null

$enableMultiSort открытое свойство

Можно ли применить сортировку к нескольким атрибутам одновременно. По умолчанию false, что означает, что каждый раз данные можно сортировать только по одному атрибуту.

public boolean $enableMultiSort = false

$orders открытое только для чтения свойство

Столбцы (ключи) и соответствующие направления сортировки (значения). Это можно передать в yii\db\Query::orderBy() для построения запроса к базе данных.

public array getOrders ( $recalculate = false )

$params открытое свойство

Параметры (имя => значение), которые следует использовать для получения текущих направлений сортировки и создания новых ссылок на страницы сортировки. Если не задано, будет использоваться $_GET вместо.

Для добавления хэша ко всем ссылкам используйте array_merge($_GET, ['#' => 'my-hash']).

Элемент массива с индексом $sortParam рассматривается как текущие направления сортировки. Если элемента не существует, будет использоваться по умолчанию порядок.

См. также:

  • $sortParam
  • $defaultOrder
public array $params = null

$route открытое свойство

Маршрут действия контроллера для отображения отсортированного содержимого. Если не задано, используется текущий запрашиваемый маршрут.

public string $route = null

$separator открытое свойство

Символ, используемый для разделения различных атрибутов, которые нужно отсортировать.

public string $separator = ','

$sortParam открытое свойство

Имя параметра, указывающего, какие атрибуты и в каком направлении сортировать. По умолчанию sort.

См. также $params.

public string $sortParam = 'sort'

$urlManager открытое свойство

Менеджер URL, используемый для создания ссылок на страницы сортировки. Если не задано, будет использован компонент urlManager приложения.

public yii\web\UrlManager $urlManager = null

Подробное описание методов

createSortParam() public method

Создаёт переменную сортировки для указанного атрибута.

Созданная переменная сортировки может быть использована для создания URL, который приведёт к сортировке по указанному атрибуту.

public string createSortParam ( $attribute )
$attribute string

Имя атрибута

return string

Значение переменной сортировки

throws yii\base\InvalidConfigException

если указанный атрибут не определён в $attributes

createUrl() public method

Создаёт URL для сортировки данных по указанному атрибуту.

Этот метод учитывает текущий статус сортировки, заданный $attributeOrders. Например, если текущая страница уже сортирует данные по указанному атрибуту в порядке возрастания, то созданный URL будет вести на страницу, сортирующую данные по указанному атрибуту в порядке убывания.

См. также:

  • $attributeOrders
  • $params
public string createUrl ( $attribute, $absolute = false )
$attribute string

Имя атрибута

$absolute boolean

Создавать ли абсолютный URL. По умолчанию false.

return string

URL для сортировки. False, если атрибут неверен.

throws yii\base\InvalidConfigException

если атрибут неизвестен

getAttributeOrder() public method

Возвращает направление сортировки указанного атрибута в текущем запросе.

public boolean|null getAttributeOrder ( $attribute )
$attribute string

Имя атрибута

return boolean|null

Направление сортировки атрибута. Может быть либо SORT_ASC для возрастания, либо SORT_DESC для убывания. Null возвращается, если атрибут неверен или не требует сортировки.

getAttributeOrders() public method

Возвращает текущую информацию о сортировке.

public array getAttributeOrders ( $recalculate = false )
$recalculate boolean

Пересчитывать ли направления сортировки

return array

Направления сортировки, индексированные именами атрибутов. Направление сортировки может быть либо SORT_ASC для возрастания, либо SORT_DESC для убывания.

getOrders() public method

Возвращает столбцы и соответствующие им направления сортировки.

public array getOrders ( $recalculate = false )
$recalculate boolean

Пересчитывать ли направления сортировки

return array

Столбцы (ключи) и соответствующие им направления сортировки (значения). Это можно передать в yii\db\Query::orderBy() для построения запроса к БД.

hasAttribute() public method

Возвращает значение, указывающее, поддерживает ли определение сортировки сортировку по указанному атрибуту.

public boolean hasAttribute ( $name )
$name string

Имя атрибута

return boolean

Поддерживает ли определение сортировки сортировку по указанному атрибуту.

init() public method

Нормализует свойство $attributes.

public void init ( )

link() public method

Генерирует гиперссылку, которая связывает действие сортировки для сортировки по указанному атрибуту.

В зависимости от направления сортировки, к CSS-классу сгенерированной гиперссылки будет добавлен "asc" или "desc".

public string link ( $attribute, $options = [] )
$attribute string

Имя атрибута, по которому должны быть отсортированы данные.

$options array

Дополнительные HTML-атрибуты для тега гиперссылки. Существует один специальный атрибут label, который будет использоваться в качестве метки гиперссылки. Если он не задан, используется метка, определённая в $attributes. Если метка не определена, вызывается yii\helpers\Inflector::camel2words() для получения метки. Обратите внимание, что она не будет закодирована в HTML.

return string

Сгенерированная гиперссылка

throws yii\base\InvalidConfigException

если атрибут неизвестен

parseSortParam() protected method (available since version 2.0.12)

Разбирает значение $sortParam в массив атрибутов сортировки.

Формат должен быть именем атрибута только для возрастания или именем атрибута, опережаемым - для убывания.

Например, следующее значение приведёт к возрастающей сортировке по category и убывающей сортировке по created_at.

[
    'category',
    '-created_at'
]

См. также:

  • $separator для разделителя имен атрибутов.
  • $sortParam
protected array parseSortParam ( $param )
$param string

Значение $sortParam.

return array

Допустимые атрибуты сортировки.

setAttributeOrders() public method (available since version 2.0.10)

Настраивает текущую информацию о сортировке.

public void setAttributeOrders ( $attributeOrders, $validate = true )
$attributeOrders array|null

Направления сортировки, индексированные именами атрибутов. Направление сортировки может быть либо SORT_ASC для возрастания, либо SORT_DESC для убывания.

$validate boolean

Проверять ли заданные порядки атрибутов по отношению к $attributes и $enableMultiSort. Если проверка включена, некорректные записи будут удалены.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-data-sort.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API