Класс 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
Подробное описание метода
_extractFindersource protected
_extractFinder( array $options )
Извлекает имя и опции поиска из предоставленных параметров постраничной навигации.
Параметры
- array
$options - параметры постраничной навигации
Возвращаемое значение
arrayМассив, содержащий в первой позиции имя нахождения и во второй — опции, которые должны быть переданы в него
_prefixsource protected
_prefix( Cake\Datasource\RepositoryInterface $object , array $order , boolean $whitelisted false )
Добавляет префикс к полю с алиасом таблицы, если это возможно.
Параметры
-
Cake\Datasource\RepositoryInterface$object - Объект репозитория.
- array
$order - Массив сортировки.
- boolean
$whitelistedнеобязательно false - Флаг, указывающий, был ли поле разрешён для сортировки.
Возвращаемое значение
arrayОкончательный массив сортировки.
checkLimitsource public
checkLimit( array $options )
Проверяет параметр limit и гарантирует, что он находится в пределах границ maxLimit.
Параметры
- array
$options - Массив опций с ключом limit для проверки.
Возвращаемое значение
arrayМассив опций для постраничной навигации
getDefaultssource public
getDefaults( string $alias , array $defaults )
Получить значения по умолчанию для $model. Если для конкретной модели нет настроек, будут использоваться общие настройки.
Параметры
- string
$alias - Имя модели, для которой нужно получить значения по умолчанию.
- array
$defaults - Значения по умолчанию для объединения настроек.
Возвращаемое значение
arrayМассив значений по умолчанию для постраничной навигации модели или общие настройки.
implementedEventssource public
implementedEvents( )
Поддерживаемые события этого компонента.
Возвращаемое значение
arrayмассив
Переопределяет
Cake\Controller\Component::implementedEvents() mergeOptionssource public
mergeOptions( string $alias , array $settings )
Объединяет различные опции, используемые для постраничной навигации. Объединяет настройки из следующих мест:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — агрегат всех объединённых наборов опций. Вы можете изменить значение конфигурации whitelist для изменения опций/значений, которые можно задать с помощью параметров запроса.
Параметры
- string
$alias - Алиас модели, которая подвергается постраничной навигации. Если в общих настройках есть ключ с этим значением, настройки этого ключа будут использоваться для постраничной навигации вместо общих.
- array
$settings - Настройки для объединения с данными запроса.
Возвращаемое значение
arrayМассив объединённых опций.
paginatesource 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 - Таблица или запрос, который нужно подвергнуть постраничной навигации.
- array
$settingsнеобязательно [] - Настройки/конфигурация, используемая для постраничной навигации.
Возвращаемое значение
arrayРезультаты запроса
Исключения
Cake\Network\Exception\NotFoundException\Cake\Network\Exception\NotFoundException
validateSortsource public
validateSort( Cake\Datasource\RepositoryInterface $object , array $options )
Проверяет, что желаемая сортировка может быть выполнена на $object. Можно сортировать только по полям или виртуальным полям. Параметр direction также будет отформатирован. В последнюю очередь ключи sort + direction будут преобразованы в удобный для модели ключ order.
Вы можете использовать параметр whitelist для управления доступными столбцами/полями для сортировки. Это помогает предотвратить сортировку больших наборов результатов по неиндексированным значениям.
Если вам нужно сортировать по связанным столбцам или синтетическим свойствам, вам необходимо использовать белый список.
Все столбцы, указанные в белом списке сортировки, будут неявно доверены. Вы можете использовать это для сортировки по синтетическим столбцам или столбцам, добавленным в пользовательских операциях поиска, которые могут отсутствовать в схеме.
Параметры
-
Cake\Datasource\RepositoryInterface$object - Объект репозитория.
- array
$options - Настройки постраничной навигации, используемые для этого запроса.
Возвращаемое значение
arrayМассив опций с удаленными sort + direction и заменёнными на order, если возможно.
Методы, унаследованные от Cake\Controller\Component
__constructsource public
__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )
Конструктор
Параметры
-
Cake\Controller\ComponentRegistry$registry - Компоненты, которые можно использовать для загрузки компонентов при необходимости.
- array
$configнеобязательно [] - Массив настроек конфигурации.
__debugInfosource public
__debugInfo( )
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращаемое значение
arrayмассив
__getsource public
__get( string $name )
Магический метод для ленивой загрузки $components.
Параметры
- string
$name - Имя компонента для получения.
Возвращаемое значение
mixedОбъект компонента или null.
initializesource public
initialize( array $config )
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы избежать необходимости переопределять конструктор и вызывать родительский.
Параметры
- массив
$config - Настройки конфигурации, предоставленные этому компоненту.
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDeletesource protected
_configDelete( string $key )
Удаление одного ключа конфигурации
Параметры
- строка
$key - Ключ для удаления.
Исключения
Cake\Core\Exception\Exceptionесли попытка перезаписать существующую конфигурацию
_configReadsource protected
_configRead( string|null $key )
Чтение переменной конфигурации
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
mixedсмешанный тип
_configWritesource protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный тип
$value - Значение для записи.
- булево|строка
$mergeнеобязательно false - True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Исключения
Cake\Core\Exception\Exceptionесли попытка перезаписи существующей конфигурации
configsource 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.
Возвращает
mixedЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallowsource 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 - Значение для установки.
Возвращает
mixedСам объект $this.
Методы, используемые из Cake\Log\LogTrait
logsource public
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Удобный метод для записи сообщения в журнал. См. Log::write() для получения дополнительной информации о записи в журналы.
Параметры
- смешанный тип
$msg - Сообщение журнала.
- целое число|строка
$levelнеобязательно LogLevel::ERROR - Уровень ошибки.
- строка|массив
$contextнеобязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
booleanУспешность записи в журнал.
Резюме свойств
Свойства, унаследованные от Cake\Controller\Component
$_componentMapsource
protected массив
Таблица поиска компонентов, используемая для ленивой загрузки объектов компонентов.
[]
$_registrysource
protected Cake\Controller\ComponentRegistry
Класс реестра компонентов, используемый для ленивой загрузки компонентов.
Свойства, используемые из Cake\Core\InstanceConfigTrait
$_configInitializedsource
protected булево
Была ли уже настроена конфигурация свойства значениями по умолчанию
false
© 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.1/class-Cake.Controller.Component.PaginatorComponent.html