Spec-Zone.ru › CakePHP 3.8

Класс 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. Это помогает предотвратить сортировку больших наборов результатов по неиндексированным значениям.

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

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

Значения по умолчанию, предоставляемые в 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
Значение для записи.
boolean|строка $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
Значение для установки.
boolean $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
Значение по умолчанию, если ключ не существует.

Возвращает

смешанное
Данные конфигурации по указанному ключу или 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
Значение для установки.
boolean $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.8/class-Cake.Datasource.Paginator.html

Spec-Zone.ru

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