Класс 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 - Экземпляр постраничного навигатора источника данных.
$_paginatorprotected
Унаследованные свойства
Краткое описание методов
- __call() publicДелегирование вызовов методов к Paginator.
- __construct() publicКонструктор
- _setPagingParams() protectedУстанавливает параметры постраничной навигации в экземпляр запроса.
- Делегирование чтения/записи параметров конфигурации Paginator.
- configShallow() publicДелегирование записи параметров конфигурации Paginator.
- getConfig() publicДелегирование чтения параметров конфигурации Paginator.
- getPaginator() publicПолучение экземпляра paginator.
- implementedEvents() publicПоддерживаемые события этого компонента.
- mergeOptions() public
Объединяет различные параметры, используемые Paginator. Собирает настройки из следующих мест:
- 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 - A ComponentRegistry this component can use to lazy load its components
- array
$configoptional [] - Массив параметров конфигурации.
Переопределяет
Cake\Controller\Component::__construct() _setPagingParams()source protected
_setPagingParams( )
Устанавливает параметры постраничной навигации в экземпляр запроса.
config()source public deprecated
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 )
Объединяет различные параметры, используемые Paginator. Собирает настройки из следующих мест:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — агрегированный набор всех объединённых наборов параметров. Вы можете изменить значение конфигурации 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'],
]
]; Передача пустого массива в качестве белого списка запрещает сортировку полностью.
Постраничная навигация с пользовательскими методами поиска
Вы можете выполнять постраничную навигацию с любым типом поиска, определённым для вашей таблицы, используя опцию 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\Http\Exception\NotFoundExceptionsetConfig()source public
setConfig( string|array $key , mixed|null $value = null , boolean $merge = true )
Продлевает настройку параметров конфигурации для Paginator.
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанный|null
$valueнеобязательно null - Значение для установки.
- логическое
$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 - Значение для записи.
- логическое|строка
$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необязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
логическоеУспех записи в журнал.
Подробности свойств
$_defaultConfigsource
protected массив
Настройки постраничной навигации по умолчанию.
При вызове paginate() эти настройки будут объединены с предоставленной вами конфигурацией.
-
maxLimit- Максимальное количество элементов, которые пользователи могут выбрать для просмотра. По умолчанию 100 -
limit- Начальное количество элементов на странице. По умолчанию 20. -
page- Стартовая страница, по умолчанию 1. -
whitelist- Список параметров, которые пользователи могут устанавливать с помощью параметров запроса. Изменение этого списка позволит пользователям больше влиять на постраничную навигацию, будьте осторожны с тем, что вы разрешаете.
[
'page' => 1,
'limit' => 20,
'maxLimit' => 100,
'whitelist' => ['limit', 'sort', 'page', 'direction']
]
© 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.Controller.Component.PaginatorComponent.html