Spec-Zone.ru › CakePHP 3.7

Класс Paginator

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

Cake\Datasource\Paginator реализует Cake\Datasource\PaginatorInterface использует Cake\Core\InstanceConfigTrait
Пространство имён: Cake\Datasource
Расположение: Datasource/Paginator.php

Краткое описание свойств

  • $_defaultConfig protected
    array
    Настройки по умолчанию для постраничной навигации.
  • $_pagingParams protected
    array
    Параметры постраничной навигации после выполнения операции.

Унаследованные свойства

  • _config, _configInitialized

Краткое описание методов

  • _extractFinder() protected
    Извлекает имя и опции поиска из предоставленных опций постраничной навигации.
  • _prefix() protected
    Добавляет префикс к полю с именем таблицы, если возможно.
  • _removeAliases() protected
    Удаляет алиас, если необходимо.
  • checkLimit() public
    Проверяет параметр limit и убеждается, что он находится в пределах maxLimit.
  • getDefaults() public

    Получает настройки для $model. Если для конкретного хранилища настроек нет, используются общие настройки.

  • getPagingParams() public
    Получает параметры постраничной навигации после выполнения операции.
  • mergeOptions() public

    Объединяет различные опции, используемые Paginator. Собирает настройки из следующих мест:

  • paginate() public
    Обрабатывает автоматическую постраничную навигацию записей модели.
  • validateSort() public
    Проверяет, что указанная сортировка может быть выполнена на $object.

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

_extractFinder()source protected

_extractFinder( array $options )

Извлекает имя и опции поиска из предоставленных опций постраничной навигации.

Параметры

массив $options
опции постраничной навигации.

Возвращает

массив

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


_prefix()source protected

_prefix( Cake\Datasource\RepositoryInterface $object , array $order , boolean $whitelisted = false )

Добавляет префикс к полю с именем таблицы, если возможно.

Параметры

Cake\Datasource\RepositoryInterface $object
Объект репозитория.
массив $order
Массив сортировки.
булево $whitelisted необязательно false
Указывает, был ли поле добавлен в белый список.

Возвращает

массив
Массив конечной сортировки.

_removeAliases()source protected

_removeAliases( array $fields , string $model )

Удаляет алиас, если необходимо.

Параметры

массив $fields
Текущие поля
строка $model
Текущий алиас модели

Возвращает

массив
$fields поля без алиасов, где применимо

checkLimit()source public

checkLimit( array $options )

Проверяет параметр limit и убеждается, что он находится в пределах maxLimit.

Параметры

массив $options
Массив опций с ключом limit для проверки.

Возвращает

массив
Массив опций для постраничной навигации.

getDefaults()source public

getDefaults( string $alias , array $settings )

Получает настройки для $model. Если для конкретного хранилища настроек нет, используются общие настройки.

Параметры

строка $alias
Имя модели для получения настроек.
массив $settings
Настройки, используемые для объединения.

Возвращает

массив

Массив настроек постраничной навигации для модели или общие настройки.


getPagingParams()source public

getPagingParams( )

Получает параметры постраничной навигации после выполнения операции.

Возвращает

массив

Реализация

Cake\Datasource\PaginatorInterface::getPagingParams()

mergeOptions()source public

mergeOptions( array $params , array $settings )

Объединяет различные опции, используемые Paginator. Собирает настройки из следующих мест:

  • Общие настройки постраничной навигации
  • Настройки, специфичные для модели.
  • Параметры запроса

Результат этого метода — совокупность всех объединённых наборов опций. Можно изменить значение конфигурации whitelist для изменения опций/значений, которые можно задать с помощью параметров запроса.

Параметры

массив $params
Параметры запроса.
массив $settings
Настройки для объединения с данными запроса.

Возвращает

массив
Объединённый массив опций.

paginate()source public

paginate( Cake\Datasource\RepositoryInterface|Cake\Datasource\QueryInterface $object , array $params = [] , array $settings = [] )

Обрабатывает автоматическую постраничную навигацию записей модели.

Настройка постраничной навигации

При вызове paginate() можно использовать параметр $settings для передачи настроек постраничной навигации. Эти настройки используются для построения запросов и управления другими настройками постраничной навигации.

Если ваши настройки содержат ключ с текущим алиасом таблицы. Данные внутри этого ключа будут использоваться. В противном случае будут использоваться настройки верхнего уровня.

$settings = [
   'limit' => 20,
   'maxLimit' => 100
 ];
 $results = $paginator->paginate($table, $settings);

Вышеуказанные настройки будут использоваться для постраничной навигации любого репозитория. Можно настроить настройки, специфичные для репозитория, присвоив ключу алиас репозитория.

$settings = [
   'Articles' => [
     'limit' => 20,
     'maxLimit' => 100
   ],
   'Comments' => [ ... ]
 ];
 $results = $paginator->paginate($table, $settings);

Это позволит иметь разные настройки постраничной навигации для репозиториев Articles и Comments.

Управление полями сортировки

По умолчанию CakePHP автоматически позволяет сортировку по любому столбцу объекта репозитория, по которому выполняется постраничная навигация. Часто вы захотите разрешить сортировку по ассоциированным столбцам или вычисляемым полям. В этих случаях вам необходимо определить белый список всех столбцов, по которым вы хотите разрешить сортировку. Вы можете определить белый список в параметре $settings.

$settings = [
  'Articles' => [
    'finder' => 'custom',
    'sortWhitelist' => ['title', 'author_id', 'comment_count'],
  ]
];

Передача пустого массива в качестве белого списка запрещает сортировку полностью.

Постраничная навигация с помощью пользовательских методов поиска

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

$settings = [
   'Articles' => [
     'finder' => 'popular'
   ]
 ];
 $results = $paginator->paginate($table, $settings);

Выполнит постраничную навигацию с помощью метода find('popular').

Также можно передать уже созданный экземпляр запроса в этот метод:

$query = $this->Articles->find('popular')->matching('Tags', function ($q) {
  return $q->where(['name' => 'CakePHP'])
});
$results = $paginator->paginate($query);

Ограничение параметров запроса

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

$articles = $paginator->paginate($articlesQuery, ['scope' => 'articles']);
$tags = $paginator->paginate($tagsQuery, ['scope' => 'tags']);

Каждый из вышеперечисленных запросов будет использовать различные наборы параметров строки запроса для данных постраничной навигации. Пример URL-адреса, выполняя постраничную навигацию по обоим результатам:

/dashboard?articles[page]=1&tags[page]=2

Параметры

Cake\Datasource\RepositoryInterface|Cake\Datasource\QueryInterface $object
Таблица или запрос для постраничной навигации.
массив $params необязательно []
Параметры запроса
массив $settings необязательно []
Настройки/конфигурация, используемая для постраничной навигации.

Возвращает

Cake\Datasource\ResultSetInterface
Результаты запроса

Выбрасывает

Cake\Datasource\Exception\PageOutOfBoundsException

Реализация

Cake\Datasource\PaginatorInterface::paginate()

validateSort()source public

validateSort( Cake\Datasource\RepositoryInterface $object , array $options )

Проверка, что желаемая сортировка может быть выполнена для объекта $object.

Можно сортировать только по полям или виртуальным полям. Параметр направления также будет очищен. Наконец, ключи sort и direction будут преобразованы в модель-дружественный ключ order.

Вы можете использовать параметр whitelist для управления доступными столбцами/полями для сортировки через параметры URL. Это помогает предотвратить возможность пользователям сортировать большие наборы результатов по неиндексированным значениям.

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

Любые столбцы, указанные в списке разрешенных значений для сортировки, будут неявно считаться надежными. Вы можете использовать это для сортировки по синтетическим столбцам или столбцам, добавленным в пользовательские операции поиска, которые могут не существовать в схеме.

Дополнительные параметры сортировки, переданные в paginate(), будут объединены с запрошенным полем/направлением сортировки пользователя.

Параметры

Cake\Datasource\RepositoryInterface $object
Объект репозитория.
массив $options
Параметры пагинации, используемые для этого запроса.

Возвращает

массив

Массив параметров со значениями sort и direction, удаленными и, если возможно, замененными на order.


Методы, используемые из Cake\Core\InstanceConfigTrait

_configDelete()source protected

_configDelete( string $key )

Удаляет один ключ конфигурации.

Параметры

строка $key
Ключ для удаления.

Исключения

Cake\Core\Exception\Exception
при попытке перезаписать существующую конфигурацию

_configRead()source protected

_configRead( string|null $key )

Читает ключ конфигурации.

Параметры

строка|null $key
Ключ для чтения.

Возвращает

смешанное

_configWrite()source protected

_configWrite( string|array $key , mixed $value , boolean|string $merge = false )

Записывает ключ конфигурации.

Параметры

строка|массив $key
Ключ для записи.
смешанное $value
Значение для записи.
логическое|строка $merge необязательно false

True для рекурсивного объединения, 'shallow' для простого объединения, false для перезаписи, по умолчанию false.

Исключения

Cake\Core\Exception\Exception
при попытке перезаписи существующей конфигурации

config()source public устаревший

config( string|array|null $key = null , mixed|null $value = null , boolean $merge = true )

Получает/устанавливает конфигурацию.

Использование

Чтение всей конфигурации:

$this->config();

Чтение определенного значения:

$this->config('key');

Чтение вложенного значения:

$this->config('some.nested.key');

Установка определенного значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Устаревший

3.4.0 используйте setConfig()/getConfig() вместо этого.

Параметры

строка|массив|null $key необязательно null
Ключ для получения/установки или весь массив конфигураций.
смешанное|null $value необязательно null
Значение для установки.
логическое $merge необязательно true
Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию true.

Возвращает

смешанное
Значение конфигурации, которое читается, или сам объект при операциях записи.

Исключения

Cake\Core\Exception\Exception
При попытке установить недопустимый ключ.

configShallow()source public

configShallow( string|array $key , mixed|null $value = null )

Объединяет переданную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.

Установка определенного значения:

$this->configShallow('key', $value);

Установка вложенного значения:

$this->configShallow('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->configShallow(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив $key
Ключ для установки или весь массив конфигураций.
смешанное|null $value необязательно null
Значение для установки.

Возвращает


$this

getConfig()source public

getConfig( string|null $key = null , mixed $default = null )

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

Использование

Чтение всей конфигурации:

$this->getConfig();

Чтение определенного значения:

$this->getConfig('key');

Чтение вложенного значения:

$this->getConfig('some.nested.key');

Чтение со значением по умолчанию:

$this->getConfig('some-key', 'default-value');

Параметры

строка|null $key необязательно null
Ключ для получения или null для всей конфигурации.
смешанное $default необязательно null
Значение по умолчанию, возвращаемое, если ключ не найден.

Возвращает

смешанное
Значение конфигурации, которое читается.

setConfig()source public

setConfig( string|array $key , mixed|null $value = null , boolean $merge = true )

Устанавливает конфигурацию.

Использование

Установка определенного значения:

$this->setConfig('key', $value);

Установка вложенного значения:

$this->setConfig('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->setConfig(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив $key
Ключ для установки или весь массив конфигураций.
смешанное|null $value необязательно null
Значение для установки.
логическое $merge необязательно true
Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию true.

Возвращает


$this

Исключения

Cake\Core\Exception\Exception
При попытке установить недопустимый ключ.

Подробности свойств

$_defaultConfigsource

protected массив

Настройки пагинации по умолчанию.

При вызове paginate() эти настройки будут объединены с вашей конфигурацией.

  • maxLimit - Максимальное количество элементов, которое пользователи могут выбрать для просмотра. По умолчанию 100
  • limit - Начальное количество элементов на странице. По умолчанию 20.
  • page - Стартовая страница, по умолчанию 1.
  • whitelist - Список параметров, которые пользователи могут установить с помощью параметров запроса. Изменение этого списка позволит пользователям иметь больше влияния на пагинацию, будьте осторожны с тем, что вы разрешаете.
[
    'page' => 1,
    'limit' => 20,
    'maxLimit' => 100,
    'whitelist' => ['limit', 'sort', 'page', 'direction']
]

$_pagingParamssource

protected массив

Параметры пагинации после завершения операции пагинации.

[]

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.7/class-Cake.Datasource.Paginator.html

Spec-Zone.ru

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