Spec-Zone.ru › CakePHP 3.6

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

Параметры

массив $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'],
  ]
];

Передача пустого массива в качестве списка разрешённых полей запрещает сортировку.

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

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

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

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

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

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

Параметры

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

Возвращает

массив

Массив опций с удалёнными sort + direction и заменёнными на order, если это возможно.


END_OF_DOCUMENT_MARKER ```

Методы, используемые из 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

Истинно для рекурсивного слияния, '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
Значение для установки.
булево $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
Значение для установки.
булево $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–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.6/class-Cake.Datasource.Paginator.html

Spec-Zone.ru

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