Spec-Zone.ru › CakePHP 3.4

Класс PaginatorComponent

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

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

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

Cake\Controller\Component implements Cake\Event\EventListenerInterface uses 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
    Экземпляр постраничного навигатора Data Source.

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

  • _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
    Получить экземпляр Paginator.
  • implementedEvents() public
    Поддерживаемые события этого компонента.
  • mergeOptions() public
    Объединяет различные параметры, используемые Pagination.
  • 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
ComponentRegistry, который может использовать этот компонент для ленивой загрузки своих компонентов
array $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() вместо этого.

Параметры

string|array|null $key optional null
Ключ для получения/установки или массив конфигурации.
mixed|null $value optional null
Значение для установки.
boolean $merge optional 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 $value optional null
Значение для установки.

Возвращает


$this

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

Cake\Core\InstanceConfigTrait::configShallow()

getConfig()source public

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

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

Параметры

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

Возвращает

mixed
Значение конфигурации, которое считывается.

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

Cake\Core\InstanceConfigTrait::getConfig()

getPaginator()source public

getPaginator( )

Получить экземпляр Paginator.

Возвращает

Cake\Datasource\Paginator

implementedEvents()source public

implementedEvents( )

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

Возвращает

array

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

Cake\Controller\Component::implementedEvents()

mergeOptions()source public

mergeOptions( string $alias , array $settings )

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

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

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

Параметры

string $alias

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

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

Возвращает

array
Массив объединённых параметров.
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'],
  ]
];

Передача пустого массива в качестве белого списка запрещает сортировку вообще.

Постраничная навигация с настраиваемыми find-запросами

Вы можете выполнить постраничную навигацию с любым типом find, определённым для вашей таблицы, используя опцию 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
Значение для установки.
boolean $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
Значение для записи.
boolean|строка $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']
]

$_paginatorsource

protected Cake\Datasource\Paginator

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

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

Spec-Zone.ru

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