Spec-Zone.ru › CakePHP 3.7

Класс 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
Смешение: \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 deprecated
    Делегирование получения/установления параметров конфигурации компоненту 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 $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 )

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

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

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

Возвращает

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

Экземпляр 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.7/class-Cake.Controller.Component.PaginatorComponent.html

Spec-Zone.ru

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