Spec-Zone.ru › CakePHP 3.5

Класс 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
    Добавляет префикс поля, если это возможно, с помощью псевдонима таблицы.
  • 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
Было ли поле включено в белый список.

Возвращает

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

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.

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

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

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

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

Параметры

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
Ключ для чтения.

Возвращает

mixed

_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.

Возвращает

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

Исключения

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
Возвращаемое значение, когда ключ отсутствует.

Возвращает

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

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–2018 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.5/class-Cake.Datasource.Paginator.html

Spec-Zone.ru

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