Spec-Zone.ru › CakePHP 3.6

Класс 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
    Экземпляр постраничного навигатора источника данных.

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

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

Краткое описание методов

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

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

  • 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
A ComponentRegistry this component can use to lazy load its components
array $config optional []
Массив параметров конфигурации.

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

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 $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 )

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

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

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

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

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

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

Установить экземпляр 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 необязательно []
Дополнительные данные журнала, относящиеся к этому сообщению.

Возвращает

логическое
Успех записи в журнал.

Подробности свойств

$_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

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

© 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.6/class-Cake.Controller.Component.PaginatorComponent.html

Spec-Zone.ru

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