Класс 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 рассматривается как текущие направления сортировки. Если элемента не существует, будет использоваться по умолчанию порядок.
См. также:
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 будет вести на страницу, сортирующую данные по указанному атрибуту в порядке убывания.
См. также:
| public string createUrl ( $attribute, $absolute = false ) | ||
|---|---|---|
| $attribute | string |
Имя атрибута |
| $absolute | boolean |
Создавать ли абсолютный URL. По умолчанию |
| return | string |
URL для сортировки. False, если атрибут неверен. |
| throws | yii\base\InvalidConfigException |
если атрибут неизвестен |
getAttributeOrder() public method
Возвращает направление сортировки указанного атрибута в текущем запросе.
| public boolean|null getAttributeOrder ( $attribute ) | ||
|---|---|---|
| $attribute | string |
Имя атрибута |
| return | boolean|null |
Направление сортировки атрибута. Может быть либо |
getAttributeOrders() public method
Возвращает текущую информацию о сортировке.
| public array getAttributeOrders ( $recalculate = false ) | ||
|---|---|---|
| $recalculate | boolean |
Пересчитывать ли направления сортировки |
| return | array |
Направления сортировки, индексированные именами атрибутов. Направление сортировки может быть либо |
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-атрибуты для тега гиперссылки. Существует один специальный атрибут |
| 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 |
Направления сортировки, индексированные именами атрибутов. Направление сортировки может быть либо |
| $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