Spec-Zone.ru › CakePHP 3.8

Класс PaginatorComponent

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

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

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

Cake\Controller\Component implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
Расширенный Cake\Controller\Component\PaginatorComponent
Пространство имён: Cake\Controller\Component
Ссылка: https://book.cakephp.org/3.0/ru/controllers/components/pagination.html
Смешение: \Cake\Datasource\Paginator
Расположение: 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

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

  • 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\Paginator

implementedEvents()source public

implementedEvents( )

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

Возвращаемое значение

массив

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

Cake\Controller\Component::implementedEvents()

mergeOptions()source public

mergeOptions( string $alias , array $settings )

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

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

Результат этого метода — совокупность всех объединённых наборов параметров. Вы можете изменить значение конфигурации 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 и %%%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\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 )

Установить экземпляр компонент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

Spec-Zone.ru

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