Spec-Zone.ru › CakePHP 3.5

Класс PaginatorComponent

Этот компонент используется для обработки автоматической постраничной навигации данных модели. Основной способ использования этого компонента — вызов метода paginate(). Также существует удобная обёртка в контроллере.

Настройка постраничной навигации

Вы настраиваете постраничную навигацию при вызове paginate(). Смотрите этот метод для получения более подробной информации.

Cake\Controller\Component реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
Extended by Cake\Controller\Component\PaginatorComponent
Пространство имён: Cake\Controller\Component
Ссылка: https://book.cakephp.org/3.0/ru/controllers/components/pagination.html
Расположение: Controller/Component/PaginatorComponent.php

Резюме свойств

  • $_defaultConfig protected
    array
    Настройки по умолчанию для постраничной навигации.
  • $_paginator protected
    Cake\Datasource\Paginator
    Экземпляр постраничной навигации источника данных.

Унаследованные свойства

  • _componentMap, _registry, components, request, response _config, _configInitialized

Резюме методов

  • __call() public
    Продлевает вызовы методов к Paginator.
  • __construct() public
    Конструктор
  • _setPagingParams() protected
    Устанавливает параметры постраничной навигации для экземпляра запроса.
  • config() public
    Продлевает получение/установку параметров конфигурации для Paginator.
  • configShallow() public
    Продлевает установку параметров конфигурации для Paginator.
  • getConfig() public
    Продлевает получение параметров конфигурации для Paginator.
  • getPaginator() public
    Получить экземпляр постраничной навигации.
  • implementedEvents() public
    Поддерживаемые события этим компонентом.
  • mergeOptions() public

    Объединяет различные параметры, используемые Paginator. Сбор настроек из следующих мест:

  • 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 optional []
Массив параметров конфигурации.

Переопределяет

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 optional null
Ключ для получения/установки или полный массив настроек.
смешанное|null $value optional null
Значение для установки.
логическое $merge optional 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 optional null
Значение для установки.

Возвращает


$this

Переопределяет

Cake\Core\InstanceConfigTrait::configShallow()

getConfig()source public

getConfig( string|null $key null , mixed $default null )

Продлевает получение параметров конфигурации для Paginator.

Параметры

строка|null $key optional null
Ключ для получения или null для всей конфигурации.
смешанное $default optional null
Возвращаемое значение, когда ключ не существует.

Возвращает

смешанное
Считываемое значение конфигурации.

Переопределяет

Cake\Core\InstanceConfigTrait::getConfig()

getPaginator()source public

getPaginator( )

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

Возвращает

Cake\Datasource\Paginator

implementedEvents()source public

implementedEvents( )

Поддерживаемые события этим компонентом.

Возвращает

массив

Переопределяет

Cake\Controller\Component::implementedEvents()

mergeOptions()source public

mergeOptions( string $alias , array $settings )

Объединяет различные параметры, используемые Paginator. Сбор настроек из следующих мест:

  • Общие настройки постраничной навигации
  • Настройки, специфичные для модели.
  • Параметры запроса

Результат этого метода — совокупность всех объединённых наборов параметров. Вы можете изменить значение конфигурации whitelist для изменения параметров/значений, которые можно задать с помощью параметров запроса.

Параметры

строка $alias

Псевдоним модели, постраничная навигация по которой выполняется, если в общих настройках есть ключ с этим значением, настройки этого ключа будут использоваться для постраничной навигации вместо общих.

массив $settings
Настройки, которые будут объединены с данными запроса.

Возвращает

массив
Массив объединённых параметров.
END_OF_DOCUMENT_MARKER

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\Network\Exception\NotFoundException

setConfig()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 )

Установить экземпляр постраничной навигации.

Параметры

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

Экземпляр постраничной навигации источника данных.

© 2005–2018 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.5/class-Cake.Controller.Component.PaginatorComponent.html

Spec-Zone.ru

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