Spec-Zone.ru › CakePHP 3.4

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

Возвращаемое значение

смешанный тип

_configWrite()source protected

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

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

Параметры

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

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

Исключения

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
Выполнять рекурсивное слияние или перезапись существующей конфигурации, по умолчанию истинно.

Возвращаемое значение

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

Исключения

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
Значение для установки.
boolean $merge необязательно 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–2017 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.4/class-Cake.Datasource.Paginator.html

Spec-Zone.ru

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