Класс 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Получение экземпляра компонента Paginator.
- implementedEvents() publicПоддерживаемые этим компонентом события.
- mergeOptions() public
Объединяет различные параметры, используемые постраничной навигацией. Собирает настройки из следующих мест:
- 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 - Компонентный реестр, который может использовать этот компонент для ленивой загрузки компонентов
- 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 )
Объединяет различные параметры, используемые постраничной навигацией. Собирает настройки из следующих мест:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — совокупность всех объединённых наборов параметров. Вы можете изменить значение параметра конфигурации 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дополнительно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
booleanУспешность записи в журнал.
Подробности свойств
$_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.7/class-Cake.Controller.Component.PaginatorComponent.html