Spec-Zone.ru › CakePHP 3.3

Класс PaginatorComponent

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

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

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

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

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

  • $_defaultConfig protected
    array
    Настройки по умолчанию для постраничной навигации.

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

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

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

  • _extractFinder() protected
    Извлекает имя и параметры поиска из предоставленных параметров постраничной навигации
  • _prefix() protected
    Добавляет префикс к полю с алиасом таблицы, если возможно.
  • checkLimit() public
    Проверяет параметр limit и гарантирует, что он находится в пределах границ maxLimit.
  • getDefaults() public

    Получить настройки для $model. Если нет настроек для конкретной модели, будут использованы общие настройки.

  • implementedEvents() public
    Поддерживаемые события этого компонента.
  • mergeOptions() public

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

  • paginate() public
    Обрабатывает автоматическую постраничную навигацию записей модели.
  • validateSort() public

    Проверка возможности выполнения сортировки по указанному полю в объекте $object. Можно сортировать по полям или виртуальным полям. Параметр direction также будет валидирован. Кроме того, ключи sort и direction будут преобразованы в удобный для модели ключ order.

Подробное описание методов

_extractFinder()source protected

_extractFinder( array $options )

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

Параметры

массив $options
параметры постраничной навигации

Возвращает

массив

Массив, содержащий в первом элементе имя поиска и во втором — параметры, которые нужно передать в него


_prefix()source protected

_prefix( Cake\Datasource\RepositoryInterface $object , array $order , boolean $whitelisted false )

Добавляет префикс к полю с алиасом таблицы, если возможно.

Параметры

Cake\Datasource\RepositoryInterface $object
Объект репозитория.
массив $order
Массив сортировки.
булево $whitelisted необязательно false
Было ли поле разрешено

Возвращает

массив
Финальный массив сортировки.

checkLimit()source public

checkLimit( array $options )

Проверяет параметр limit и гарантирует, что он находится в пределах границ maxLimit.

Параметры

массив $options
Массив параметров с ключом limit для проверки.

Возвращает

массив
Массив параметров для постраничной навигации

getDefaults()source public

getDefaults( string $alias , array $settings )

Получить настройки для $model. Если нет настроек для конкретной модели, будут использованы общие настройки.

Параметры

строка $alias
Имя модели для получения настроек.
массив $settings
Настройки для объединения.

Возвращает

массив
Массив настроек постраничной навигации для модели или общие настройки.

implementedEvents()source public

implementedEvents( )

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

Возвращает

массив

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

Cake\Controller\Component::implementedEvents()

mergeOptions()source public

mergeOptions( string $alias , array $settings )

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

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

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

Параметры

строка $alias

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

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

Возвращает

массив
Объединённые параметры.

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'],
  ]
];

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

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

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

validateSort()source public

validateSort( Cake\Datasource\RepositoryInterface $object , array $options )

Проверьте, что желаемая сортировка может быть выполнена на $object. Только поля или virtualFields могут быть отсортированы. Параметр direction также будет очищен. Наконец, ключи sort + direction будут преобразованы в модель-дружественный ключ order.

Вы можете использовать параметр whitelist для управления доступными для сортировки столбцами/полями. Это помогает предотвратить сортировку больших наборов результатов по неиндексированным значениям.

Если вам нужно сортировать по связанным столбцам или синтетическим свойствам, вам нужно будет использовать белый список.

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

Параметры

Cake\Datasource\RepositoryInterface $object
Объект репозитория.
массив $options
Параметры постраничной навигации, используемые для этого запроса.

Возвращает

массив
Массив опций со удалёнными sort + direction и заменёнными на order, если это возможно.

Методы, унаследованные от Cake\Controller\Component

__construct()source public

__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )

Конструктор

Параметры

Cake\Controller\ComponentRegistry $registry
ComponentRegistry, который может использовать этот компонент для ленивой загрузки своих компонентов
массив $config необязательно []
Массив параметров конфигурации.

__debugInfo()source public

__debugInfo( )

Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.

Возвращает

массив

__get()source public

__get( string $name )

Магический метод для ленивой загрузки $components.

Параметры

строка $name
Имя компонента для получения.

Возвращает

смешанное
Объект компонента или null.

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
при попытке перезаписи существующей конфигурации

config()source public

config( string|array|null $key null , mixed|null $value null , boolean $merge true )

Использование

Чтение всей конфигурации:

$this->config();

Чтение определённого значения:

$this->config('key');

Чтение вложенного значения:

$this->config('some.nested.key');

Установка определённого значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких параметров конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив|null $key необязательно null
Ключ для получения/установки или полный массив конфигураций.
смешанное|null $value необязательно null
Значение для установки.
булево $merge необязательно true
Необходимо ли рекурсивно сливать или перезаписывать существующую конфигурацию, по умолчанию true.

Возвращает

смешанное
Значение конфигурации, которое считывается, или сам объект при операциях записи.

Возбуждает

Cake\Core\Exception\Exception
При попытке установить недопустимый ключ.

configShallow()source public

configShallow( string|array $key , mixed|null $value null )

Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.

Установка определённого значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких параметров конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив $key
Ключ для установки или полный массив конфигураций.
смешанное|null $value необязательно null
Значение для установки.

Возвращает


$this Сам объект.

Методы, используемые из 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']
]

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

Spec-Zone.ru

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