Класс PaginatorComponent
Этот компонент используется для обработки автоматической постраничной навигации данных модели. Основной способ использования этого компонента — вызов метода paginate(). Также существует удобная обертка для контроллера.
Настройка постраничной навигации
Вы настраиваете постраничную навигацию при вызове paginate(). Подробнее см. в документации этого метода.
- Cake\Controller\Component implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\PaginatorComponent
Ссылка: http://book.cakephp.org/3.0/ru/controllers/components/pagination.html
Расположение: Controller/Component/PaginatorComponent.php
Краткое описание свойств
-
$_defaultConfigprotectedНастройки по умолчанию для постраничной навигации.array
Унаследованные свойства
Краткое описание методов
- _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\NotFoundExceptionvalidateSort()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