Spec-Zone.ru › CakePHP 3.2

Класс 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
Ссылка: 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 $defaults )

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

Параметры

строка $alias
Имя модели, для которой необходимо получить значения по умолчанию.
массив $defaults
Значения по умолчанию для объединения настроек.

Возвращает

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

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

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

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

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

Параметры

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

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

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

Любые столбцы, указанные в списке сортировки 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
Имя компонента для получения.

Возвращает

смешанное
Объект Component или 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

Истина для рекурсивного слияния, 'shallow' для простого слияния, ложь для перезаписи, по умолчанию ложь.

Выбрасывает

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–2016 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.
http://api.cakephp.org/3.2/class-Cake.Controller.Component.PaginatorComponent.html

Spec-Zone.ru

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