Spec-Zone.ru › CakePHP 3.1

Класс 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

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

_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.
END_OF_DOCUMENT_MARKER

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
Успешность записи в журнал.

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

$_defaultConfigsource

protected массив

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

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

  • maxLimit - Максимальное количество элементов, которые пользователи могут выбрать для просмотра. По умолчанию 100
  • limit - Начальное количество элементов на странице. По умолчанию 20.
  • page - Начальная страница, по умолчанию 1.
  • whitelist - Список параметров, которые пользователи могут установить с помощью параметров запроса. Изменение этого списка позволит пользователям больше влиять на постраничную навигацию, будьте осторожны с тем, что вы разрешаете.
[
    'page' => 1,
    'limit' => 20,
    'maxLimit' => 100,
    'whitelist' => ['limit', 'sort', 'page', 'direction']
]

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

$_componentMapsource

protected массив

Таблица поиска компонентов, используемая для ленивой загрузки объектов компонентов.

[]

$_registrysource

protected Cake\Controller\ComponentRegistry

Класс реестра компонентов, используемый для ленивой загрузки компонентов.

$componentssource

public массив

Другие компоненты, которые использует этот компонент.

[]

$requestsource

public Cake\Network\Request

Объект запроса

$responsesource

public Cake\Network\Response

Объект ответа

Свойства, используемые из Cake\Core\InstanceConfigTrait

$_configsource

protected массив

Конфигурация во время выполнения

[]

$_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

Spec-Zone.ru

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