Класс PaginatorComponent
Этот компонент используется для обработки автоматической постраничной навигации данных модели. Основной способ использования этого компонента — вызов метода paginate(). Также есть удобная обёртка в контроллере.
Настройка постраничной навигации
Настройка постраничной навигации осуществляется с помощью PaginatorComponent::$settings. Это позволяет настроить стандартное поведение постраничной навигации в общем случае или для конкретной модели. Общие настройки используются, когда нет специфической настройки для модели, или у модели, которую вы постранично отображаете, нет собственных настроек.
$this->Paginator->settings = array(
'limit' => 20,
'maxLimit' => 100
); Вышеуказанные настройки будут использоваться для постраничной навигации любой модели. Вы можете настроить настройки, специфичные для модели, присвоив настройки имени модели.
$this->Paginator->settings = array(
'Post' => array(
'limit' => 20,
'maxLimit' => 100
),
'Comment' => array( ... )
); Это позволит иметь разные настройки постраничной навигации для моделей Comment и Post.
Постраничная навигация с пользовательскими поисковыми методами
Вы можете производить постраничную навигацию с любым типом поиска, определённым в вашей модели, используя параметр findType.
$this->Paginator->settings = array(
'Post' => array(
'findType' => 'popular'
)
); Это произведёт постраничную навигацию, используя метод find('popular').
- CakeObject
-
Компонент
-
PaginatorComponent
Ссылка: https://book.cakephp.org/2.0/en/core-libraries/components/pagination.html
Авторские права: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
Лицензия: Лицензия MIT
Расположение: Cake/Controller/Component/PaginatorComponent.php
Краткое описание свойств
-
$settingspublicarrayНастройки постраничной навигации. Эти настройки контролируют постраничную навигацию на общем уровне. Вы также можете определить подмассивы для настроек постраничной навигации для конкретных моделей.
-
$whitelistpublicarrayСписок параметров, которые пользователи могут устанавливать, используя параметры запроса. Изменение этого списка позволит пользователям иметь больше влияния на постраничную навигацию, будьте осторожны с тем, что вы разрешаете.
Унаследованные свойства
Краткое описание методов
- __construct() publicКонструктор
- _getObject() protectedПолучить объект, на котором будет производиться постраничная навигация.
- checkLimit() publicПроверить параметр limit и убедиться, что он находится в пределах границ maxLimit.
- getDefaults() public
Получить настройки по умолчанию для $model. Если нет настроек для конкретной модели, будут использоваться общие настройки.
- mergeOptions() public
Объединяет различные параметры, используемые постраничной навигацией. Собирает настройки из следующих мест:
- paginate() publicОбрабатывает автоматическую постраничную навигацию записей модели.
- validateSort() public
Проверить, что желаемая сортировка может быть выполнена для $object. Можно сортировать только по полям или виртуальным полям. Параметр direction также будет очищен. Наконец, ключи sort + direction будут преобразованы в удобный для модели ключ order.
Подробное описание методов
__construct()source public
__construct( ComponentCollection $collection , array $settings array() )
Конструктор
Параметры
-
ComponentCollection$collection - A ComponentCollection this component can use to lazy load its components
- array
$settingsoptional array() - Массив параметров конфигурации.
Переопределяет
Component::__construct() _getObject()source protected
_getObject( string|Model $object )
Получить объект, на котором будет производиться постраничная навигация.
Параметры
- string|
Model$object - Объект, который вы ищете.
Возвращает
mixedОбъект модели для постраничной навигации.
checkLimit()source public
checkLimit( array $options )
Проверить параметр limit и убедиться, что он находится в пределах границ maxLimit.
Параметры
- array
$options - Массив параметров с ключом limit для проверки.
Возвращает
arrayМассив параметров для постраничной навигации
getDefaults()source public
getDefaults( string $alias )
Получить настройки по умолчанию для $model. Если нет настроек для конкретной модели, будут использоваться общие настройки.
Параметры
- string
$alias - Имя модели для получения настроек по умолчанию.
Возвращает
arrayМассив настроек по умолчанию для модели или общие настройки.
mergeOptions()source public
mergeOptions( string $alias )
Объединяет различные параметры, используемые постраничной навигацией. Собирает настройки из следующих мест:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — совокупность всех объединённых наборов параметров. Вы можете изменить PaginatorComponent::$whitelist, чтобы изменить параметры/значения, которые могут быть установлены с помощью параметров запроса.
Параметры
- string
$alias Псевдоним модели, для которой выполняется постраничная навигация. Если в общих настройках есть ключ с этим значением, настройки этого ключа будут использоваться для постраничной навигации вместо общих.
Возвращает
arrayМассив объединённых параметров.
paginate()source public
paginate( Model|string $object null , string|array $scope array() , array $whitelist array() )
Обрабатывает автоматическую постраничную навигацию записей модели.
Параметры
-
Model|string$objectoptional null - Модель для постраничной навигации (например: экземпляр модели, или 'Модель', или 'Модель.ВнутренняяМодель')
- string|array
$scopeoptional array() - Дополнительные условия поиска для использования при постраничной навигации
- array
$whitelistoptional array() Список разрешенных полей для сортировки. Это позволяет предотвратить сортировку по полям, которые не индексированы или нежелательны. Дополнительные сведения о том, как работает проверка разрешения и поля сортировки, см. в PaginatorComponent::validateSort().
Возвращает
arrayРезультаты запроса к модели
Выбрасывает
MissingModelExceptionNotFoundExceptionvalidateSort()source public
validateSort( Model $object , array $options , array $whitelist array() )
Проверить, что желаемая сортировка может быть выполнена для $object. Можно сортировать только по полям или виртуальным полям. Параметр direction также будет очищен. Наконец, ключи sort + direction будут преобразованы в удобный для модели ключ order.
Вы можете использовать параметр whitelist, чтобы управлять доступными колонками/полями для сортировки. Это помогает предотвратить сортировку больших наборов результатов по неиндексированным значениям.
Любые колонки, указанные в whitelist для сортировки, будут неявно доверенными. Вы можете использовать это для сортировки по синтетическим колонкам или колонкам, добавленным в пользовательские операции поиска, которые могут не существовать в схеме.
Параметры
-
Model$object - Модель, для которой выполняется постраничная навигация.
- array
$options - Параметры постраничной навигации, используемые для этого запроса.
- array
$whitelistoptional array() - Список колонок, которые можно использовать для сортировки. Если пусто, разрешены все ключи.
Возвращает
arrayМассив параметров со удалёнными sort + direction и заменой на order, если это возможно.
Методы, унаследованные от Компонента
__get()source public
__get( string $name )
Магический метод для леничной загрузки $components.
Параметры
- string
$name - Имя компонента для получения.
Возвращает
mixedОбъект компонента или null.
beforeRedirect()source public
beforeRedirect( Controller $controller , string|array $url , integer $status null , boolean $exit true )
Вызывается перед Controller::redirect(). Позволяет заменить URL, на который будет перенаправлен пользователь, на новый URL. Результатом этого метода может быть массив или строка.
Если результатом является массив и содержит ключ 'url', вы также можете указать следующие параметры:
-
statusКод состояния перенаправления -
exitНеобходимо ли завершить выполнение скрипта после перенаправления.
Если результатом является строка или массив, не содержащий ключа 'url', он будет использован в качестве нового URL для перенаправления.
Параметры
-
Controller$controller - Контроллер с компонентами, для которых вызывается beforeRedirect
- строка|массив
$url - Строка или массив URL, на который происходит перенаправление.
- целое число
$statusнеобязательно null - Код состояния перенаправления
- логическое значение
$exitнеобязательно true - Необходимо ли завершить выполнение скрипта.
Возвращаемое значение
массив|nullЛибо массив, либо null.
Ссылка
https://book.cakephp.org/2.0/ru/controllers/components.html#Component::beforeRedirectbeforeRender()source public
beforeRender( Controller $controller )
Вызывается перед Controller::beforeRender(), перед загрузкой класса представления и перед Controller::render()
Параметры
-
Controller$controller - Контроллер с компонентами, для которых вызывается beforeRender
Ссылка
https://book.cakephp.org/2.0/ru/controllers/components.html#Component::beforeRenderinitialize()source public
initialize( Controller $controller )
Вызывается перед Controller::beforeFilter().
Параметры
-
Controller$controller - Контроллер с компонентами, для которых вызывается initialize
Ссылка
https://book.cakephp.org/2.0/ru/controllers/components.html#Component::initializeshutdown()source public
shutdown( Controller $controller )
Вызывается после Controller::render() и перед выводом данных в браузер.
Параметры
-
Controller$controller - Контроллер с компонентами, для которых вызывается shutdown
Ссылка
https://book.cakephp.org/2.0/ru/controllers/components.html#Component::shutdownstartup()source public
startup( Controller $controller )
Вызывается после Controller::beforeFilter() и перед выполнением действия контроллера
Параметры
-
Controller$controller - Контроллер с компонентами, для которых вызывается startup
Ссылка
https://book.cakephp.org/2.0/ru/controllers/components.html#Component::startupМетоды, унаследованные от CakeObject
_mergeVars()source protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Объединяет свойства объекта $property со свойствами в определении класса $class. Значение свойств текущего класса будут добавлены поверх свойств класса $class.
Это предоставляет некоторую DRY-магию CakePHP. Если вы хотите её отключить, переопределите этот метод как пустую функцию.
Параметры
- массив
$properties - Имя свойств для объединения.
- строка
$class - Класс для объединения свойств.
- логическое значение
$normalizeнеобязательно true - Установите в значение true, чтобы выполнить нормализацию свойств с помощью Hash::normalize() перед объединением.
_set()source protected
_set( array $properties array() )
Позволяет установить несколько свойств объекта в одной строке кода. Будут установлены только свойства, которые являются частью объявления класса.
Параметры
- массив
$propertiesнеобязательно array() - Ассоциативный массив, содержащий свойства и соответствующие значения.
_stop()source protected
_stop( integer|string $status 0 )
Останавливает выполнение текущего скрипта. Оборачивает exit(), что упрощает тестирование.
Параметры
- целое число|строка
$statusнеобязательно 0 - см. http://php.net/exit для значений
dispatchMethod()source public
dispatchMethod( string $method , array $params array() )
Вызывает метод этого объекта с заданными параметрами. Предоставляет обертку ООП для call_user_func_array
Параметры
- строка
$method - Имя метода для вызова
- массив
$paramsнеобязательно array() - Список параметров для использования при вызове $method
Возвращаемое значение
смешанноеВозвращает результат вызова метода
log()source public
log( string $msg , integer $type LOG_ERR , null|string|array $scope null )
Удобный метод для записи сообщения в CakeLog. См. CakeLog::write() для получения дополнительной информации о записи в лог.
Параметры
- строка
$msg - Сообщение для лога
- целое число
$typeнеобязательно LOG_ERR - Константа типа ошибки. Определена в app/Config/core.php.
- null|строка|массив
$scopeнеобязательно null Область(и), в которой создаётся сообщение для лога. См. CakeLog::config() для получения дополнительной информации о областях ведения логов.
Возвращаемое значение
логическое значениеУспех записи в лог
requestAction()source public
requestAction( string|array $url , array $extra array() )
Вызывает метод контроллера из любой точки приложения. Может использоваться для соединения контроллеров или подключения плагинов к основному приложению. requestAction может использоваться для возврата рендеренных представлений или получения возвращаемого значения от действий контроллеров.
Под капотом этот метод использует Router::reverse() для преобразования параметра $url в строковый URL. Вы должны использовать форматы URL, совместимые с Router::reverse()
Передача данных POST и GET
Данные POST и GET могут быть смоделированы в requestAction. Используйте $extra['url'] для данных GET. Параметр $extra['data'] позволяет смоделировать данные POST.
Параметры
- строка|массив
$url Строка или массив URL. В отличие от других массивов URL в CakePHP, этот URL не будет автоматически обрабатывать переданные и именованные аргументы в параметре $url.
- массив
$extraнеобязательно array() Если массив включает ключ "return", он устанавливает AutoRender в true. Также может быть использован для отправки данных GET/POST и именованных/переданных аргументов.
Возвращаемое значение
смешанноеЛогическое значение true или false при успехе/неудачи, или содержимое рендерного действия, если в $extra установлен ключ 'return'.
toString()source public
toString( )
Преобразование CakeObject в строку. Каждый класс может переопределить этот метод по мере необходимости.
Возвращаемое значение
строкаИмя этого класса
Подробное описание свойств
$settingssource
public array
Настройки пагинации. Эти настройки управляют пагинацией на общем уровне. Вы также можете определить подмассивы настроек пагинации для конкретных моделей.
-
maxLimitМаксимальное количество элементов, которое могут выбрать пользователи для просмотра. По умолчанию 100 -
limitНачальное количество элементов на страницу. По умолчанию 20. -
pageНомер стартовой страницы, по умолчанию 1. -
paramTypeКакой тип параметров вы хотите использовать для пагинации?-
namedИспользовать именованные параметры / параметры маршрутизации. -
querystringИспользовать параметры запроса.
-
-
queryScopeИспользуя области параметров запроса, вы можете страницировать несколько запросов в одном действии контроллера.
$paginator->paginate = array(
'Article' => array('queryScope' => 'articles'),
'Tag' => array('queryScope' => 'tags'),
); Каждый из вышеперечисленных запросов будет использовать разные наборы параметров запроса для данных пагинации. Пример URL, страницирующий оба результата:
/dashboard/articles[page]:1/tags[page]:2
array(
'page' => 1,
'limit' => 20,
'maxLimit' => 100,
'paramType' => 'named',
'queryScope' => null
) $whitelistsource
public array
Список параметров, которые пользователи могут задавать с помощью параметров запроса. Изменение этого списка позволит пользователям сильнее влиять на пагинацию, будьте осторожны с тем, что вы разрешаете.
array(
'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/2.10/class-PaginatorComponent.html