Класс 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
Смешение: \Cake\Datasource\Paginator
Расположение: Controller/Component/PaginatorComponent.php
Краткое описание свойств
-
$_defaultConfigprotectedЗначения по умолчанию для настроек постраничной навигации.array - Экземпляр постраничной навигации источника данных.
$_paginatorprotected
Унаследованные свойства
Краткое описание методов
- __call() publicДелегирование вызовов методов в Paginator.
- __construct() publicКонструктор
- _setPagingParams() protectedУстановка параметров постраничной навигации для экземпляра запроса.
- Делегирование получения/установки параметров конфигурации в Paginator.
- configShallow() publicДелегирование установки параметров конфигурации в Paginator.
- getConfig() publicДелегирование получения параметров конфигурации в Paginator.
- getPaginator() publicПолучение экземпляра постраничной навигации.
- implementedEvents() publicПоддерживаемые события этого компонента.
- mergeOptions() public
Объединяет различные параметры, используемые постраничной навигацией. Сбор настроек из следующих мест:
- paginate() publicОбработка автоматической постраничной навигации записей модели.
- setConfig() publicДелегирование установки параметров конфигурации в Paginator.
- setPaginator() publicУстановка экземпляра постраничной навигации.
Подробное описание методов
__call()source public
__call( string $method , array $args )
Делегирование вызовов методов в Paginator.
Параметры
- строка
$method - Имя метода.
- массив
$args - Аргументы метода.
Возвращаемое значение
смешанное__construct()source public
__construct( Cake\Controller\ComponentRegistry $registry , array $config = [] )
Конструктор
Параметры
-
Cake\Controller\ComponentRegistry$registry - A ComponentRegistry, который может использовать этот компонент для ленивой загрузки компонентов
- массив
$configнеобязательно [] - Массив параметров конфигурации.
Переопределяет
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()Параметры
- строка|массив|null
$keyнеобязательно null - Ключ для получения/установки или полный массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
- булево
$mergeнеобязательно true - Объединять или перезаписывать существующую конфигурацию рекурсивно, по умолчанию true.
Возвращаемое значение
смешанноеЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Переопределяет
Cake\Core\InstanceConfigTrait::config() configShallow()source public
configShallow( string|array $key , mixed|null $value = null )
Делегирование установки параметров конфигурации в Paginator.
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
Возвращаемое значение
$this
Переопределяет
Cake\Core\InstanceConfigTrait::configShallow() getConfig()source public
getConfig( string|null $key = null , mixed $default = null )
Делегирование получения параметров конфигурации в Paginator.
Параметры
- строка|null
$keyнеобязательно null - Ключ для получения или null для всей конфигурации.
- смешанное
$defaultнеобязательно null - Возвращаемое значение, когда ключ не существует.
Возвращаемое значение
смешанноеЗначение конфигурации, которое считывается.
Переопределяет
Cake\Core\InstanceConfigTrait::getConfig() getPaginator()source public
getPaginator( )
Получение экземпляра постраничной навигации.
Возвращаемое значение
Cake\Datasource\PaginatorimplementedEvents()source public
implementedEvents( )
Поддерживаемые события этого компонента.
Возвращаемое значение
массивПереопределяет
Cake\Controller\Component::implementedEvents() mergeOptions()source public
mergeOptions( string $alias , array $settings )
Объединяет различные параметры, используемые постраничной навигацией. Сбор настроек из следующих мест:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — совокупность всех объединённых наборов параметров. Вы можете изменить значение конфигурации whitelist для изменения параметров/значений, которые можно задать с помощью параметров запроса.
Параметры
- строка
$alias Псевдоним модели, для которой выполняется постраничная навигация. Если в общих настройках есть ключ с таким значением, настройки этого ключа будут использоваться для постраничной навигации вместо общих.
- массив
$settings - Настройки для объединения с данными запроса.
Возвращаемое значение
массивМассив объединённых параметров.
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 и %%%CODE_BLOCK_47%%.
Управление полями сортировки
По умолчанию CakePHP автоматически разрешает сортировку по любому столбцу объекта таблицы, по которому выполняется постраничная навигация. Часто вам нужно будет разрешить сортировку по связанным столбцам или вычисляемым полям. В этих случаях вам нужно определить белый список всех столбцов, по которым вы хотите разрешить сортировку. Вы можете определить белый список в параметре %%%CODE_BLOCK_48%%:
$settings = [
'Articles' => [
'finder' => 'custom',
'sortWhitelist' => ['title', 'author_id', 'comment_count'],
]
]; Передача пустого массива как белого списка запрещает сортировку вообще.
Постраничная навигация с пользовательскими нахождениями
Вы можете выполнить постраничную навигацию с любым типом поиска, определенным для вашей таблицы, используя опцию %%%CODE_BLOCK_50%%.
$settings = [
'Articles' => [
'finder' => 'popular'
]
];
$results = $paginator->paginate($table, $settings); Выполнит постраничную навигацию, используя метод %%%CODE_BLOCK_52%%.
Вы также можете передать уже созданный экземпляр запроса в этот метод:
$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 )
Установить экземпляр компонентa постраничной навигации.
Параметры
-
Cake\Datasource\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']
] $_paginatorsource
protected Cake\Datasource\Paginator
Экземпляр компонента постраничной навигации Datasource.
© 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.Controller.Component.PaginatorComponent.html