Класс PaginatorComponent
Этот компонент используется для обработки автоматической постраничной навигации данных модели. Основной способ использования этого компонента — вызов метода paginate(). Также имеется удобная обертка для контроллера.
Настройка постраничной навигации
Вы настраиваете постраничную навигацию при вызове paginate(). Подробнее см. этот метод.
- Cake\Controller\Component implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\PaginatorComponent
Ссылка: https://book.cakephp.org/3.0/ru/controllers/components/pagination.html
Расположение: Controller/Component/PaginatorComponent.php
Краткое описание свойств
-
$_defaultConfigprotectedНастройки по умолчанию для постраничной навигации.array - Экземпляр постраничного навигатора Data Source.
$_paginatorprotected
Унаследованные свойства
Краткое описание методов
- __call() publicМетоды прокси-вызовов для Paginator.
- __construct() publicКонструктор
- _setPagingParams() protectedУстанавливает параметры постраничной навигации для экземпляра запроса.
- config() publicПроксирование получения/установки параметров конфигурации для Paginator.
- configShallow() publicПроксирование установки параметров конфигурации для Paginator.
- getConfig() publicПроксирование получения параметров конфигурации для Paginator.
- getPaginator() publicПолучить экземпляр Paginator.
- implementedEvents() publicПоддерживаемые события этого компонента.
- mergeOptions() publicОбъединяет различные параметры, используемые Pagination.
- paginate() publicОбрабатывает автоматическую постраничную навигацию записей модели.
- setConfig() publicПроксирование установки параметров конфигурации для Paginator.
- setPaginator() publicУстановить экземпляр Paginator.
Подробное описание методов
__call()source public
__call( string $method , array $args )
Методы прокси-вызовов для Paginator.
Параметры
- string
$method - Имя метода.
- array
$args - Аргументы метода.
Возвращает
mixed__construct()source public
__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )
Конструктор
Параметры
-
Cake\Controller\ComponentRegistry$registry - ComponentRegistry, который может использовать этот компонент для ленивой загрузки своих компонентов
- array
$configoptional [] - Массив настроек конфигурации.
Переопределяет
Cake\Controller\Component::__construct() _setPagingParams()source protected
_setPagingParams( )
Устанавливает параметры постраничной навигации для экземпляра запроса.
config()source public
config( string|array|null $key null , mixed|null $value null , boolean $merge true )
Проксирование получения/установки параметров конфигурации для Paginator.
Устарело
3.5.0 используйте setConfig()/getConfig() вместо этого.Параметры
- string|array|null
$keyoptional null - Ключ для получения/установки или массив конфигурации.
- mixed|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional true - Рекурсивное объединение или перезапись существующей конфигурации, по умолчанию true.
Возвращает
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Вызывает
Cake\Core\Exception\ExceptionПри попытке установить недействительный ключ.
Переопределяет
Cake\Core\InstanceConfigTrait::config() configShallow()source public
configShallow( string|array $key , mixed|null $value null )
Проксирование установки параметров конфигурации для Paginator.
Параметры
- string|array
$key - Ключ для установки или массив конфигурации.
- mixed|null
$valueoptional null - Значение для установки.
Возвращает
$this
Переопределяет
Cake\Core\InstanceConfigTrait::configShallow() getConfig()source public
getConfig( string|null $key null , mixed $default null )
Проксирование получения параметров конфигурации для Paginator.
Параметры
- string|null
$keyoptional null - Ключ для получения или null для всей конфигурации.
- mixed
$defaultoptional null - Возвращаемое значение, когда ключ не существует.
Возвращает
mixedЗначение конфигурации, которое считывается.
Переопределяет
Cake\Core\InstanceConfigTrait::getConfig() getPaginator()source public
getPaginator( )
Получить экземпляр Paginator.
Возвращает
Cake\Datasource\PaginatorimplementedEvents()source public
implementedEvents( )
Поддерживаемые события этого компонента.
Возвращает
arrayПереопределяет
Cake\Controller\Component::implementedEvents() mergeOptions()source public
mergeOptions( string $alias , array $settings )
Объединяет различные параметры, используемые Pagination. Собирает настройки из следующих мест:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — совокупность всех объединённых наборов параметров. Вы можете изменить значение конфигурации whitelist для изменения параметров/значений, которые можно задать с помощью параметров запроса.
Параметры
- string
$alias Псевдоним модели, которая постранично навигация, если в общих настройках есть ключ с этим значением, то настройки этого ключа будут использоваться для постраничной навигации вместо общих.
- array
$settings - Настройки, которые объединяются с данными запроса.
Возвращает
arrayМассив объединённых параметров.
paginate()source public
paginate( Cake\Datasource\RepositoryInterface|Cake\Datasource\QueryInterface $object , 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'],
]
]; Передача пустого массива в качестве белого списка запрещает сортировку вообще.
Постраничная навигация с настраиваемыми find-запросами
Вы можете выполнить постраничную навигацию с любым типом find, определённым для вашей таблицы, используя опцию 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 - Таблица или запрос для постраничной навигации.
- массив
$settingsнеобязательно [] - Настройки/конфигурация, используемые для постраничной навигации.
Возвращает
Cake\Datasource\ResultSetInterfaceРезультаты запроса
Возбуждает
Cake\Network\Exception\NotFoundExceptionsetConfig()source public
setConfig( string|array $key , mixed|null $value null , boolean $merge true )
Задает конфигурационные параметры для Paginator.
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Флаг для рекурсивного слияния или перезаписи существующей конфигурации, по умолчанию true.
Возвращает
$this
Возбуждает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Переопределяет
Cake\Core\InstanceConfigTrait::setConfig() setPaginator()source public
setPaginator( Cake\Datasource\Paginator $paginator )
Устанавливает экземпляр paginator.
Параметры
-
Cake\Datasource\Paginator$paginator - Экземпляр Paginator.
Возвращает
Cake\Controller\Component\PaginatorComponentМетоды, унаследованные от Cake\Controller\Component
__debugInfo()source public
__debugInfo( )
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
массив__get()source public
__get( string $name )
Магический метод для леничной загрузки $components.
Параметры
- строка
$name - Имя компонента для получения.
Возвращает
смешанноеОбъект компонента или null.
getController()source public
getController( )
Получить контроллер, к которому привязан этот компонент.
Возвращает
Cake\Controller\ControllerПривязанный контроллер.
initialize()source public
initialize( array $config )
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы избежать необходимости перезаписывать конструктор и вызывать родительский.
Параметры
- массив
$config - Настройки конфигурации, предоставленные этому компоненту.
Методы, используемые из 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если происходит попытка замены существующей конфигурации
Методы, используемые из Cake\Log\LogTrait
log()source public
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Удобный метод для записи сообщения в журнал. Подробнее о записи в журналы см. Log::write().
Параметры
- смешанное
$msg - Сообщение журнала.
- целое число|строка
$levelнеобязательно LogLevel::ERROR - Уровень ошибки.
- строка|массив
$contextнеобязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
booleanРезультат записи в журнал.
Подробное описание свойств
$_defaultConfigsource
protected массив
Настройки постраничной навигации по умолчанию.
При вызове paginate() эти настройки будут слиты с конфигурацией, которую вы предоставляете.
-
maxLimit- Максимальное количество элементов, которое пользователи могут выбрать для просмотра. По умолчанию 100. -
limit- Начальное количество элементов на странице. По умолчанию 20. -
page- Номер начальной страницы, по умолчанию 1. -
whitelist- Список параметров, которые пользователи могут установить с помощью параметров запроса. Изменение этого списка позволит пользователям больше влиять на постраничную навигацию, будьте осторожны с тем, что вы разрешаете.
[
'page' => 1,
'limit' => 20,
'maxLimit' => 100,
'whitelist' => ['limit', 'sort', 'page', 'direction']
]
© 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.Controller.Component.PaginatorComponent.html