CPagination
| Пакет | system.web |
|---|---|
| Наследование | class CPagination » CComponent |
| С версии | 1.0 |
| Исходный код | framework/web/CPagination.php |
Когда данные необходимо отобразить на нескольких страницах, можно использовать CPagination для представления информации, такой как общее количество элементов, размер страницы, текущая страница и т. д. Эту информацию можно передать пагинаторам для отображения кнопок или ссылок пагинации.
Пример:
Действие контроллера:
function actionIndex(){
$criteria=new CDbCriteria();
$count=Article::model()->count($criteria);
$pages=new CPagination($count);
// results per page
$pages->pageSize=10;
$pages->applyLimit($criteria);
$models=Article::model()->findAll($criteria);
$this->render('index', array(
'models' => $models,
'pages' => $pages
));
}
Представление:
<?php foreach($models as $model): ?>
// display a model
<?php endforeach; ?>
// display pagination
<?php $this->widget('CLinkPager', array(
'pages' => $pages,
)) ?>
Свойства Public
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| currentPage | целое число | индекс текущей страницы (нумерация с нуля). | CPagination |
| itemCount | целое число | общее количество элементов. | CPagination |
| limit | целое число | предел данных. | CPagination |
| offset | целое число | смещение данных. | CPagination |
| pageCount | целое число | количество страниц | CPagination |
| pageSize | целое число | количество элементов на странице. | CPagination |
| pageVar | строка | имя GET-переменной, хранящей индекс текущей страницы. | CPagination |
| params | массив | параметры (имя=>значение), которые следует использовать вместо GET при генерации URL-адресов пагинации. | CPagination |
| route | строка | маршрут (ID контроллера и ID действия) для отображения страниц с данными. | CPagination |
| validateCurrentPage | булево | указывается ли, что currentPage возвращает допустимый номер страницы. | CPagination |
Public Methods
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CPagination |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства нулевым. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| applyLimit() | Применяет LIMIT и OFFSET к указанным критериям запроса. | CPagination |
| asa() | Возвращает объект поведения с указанным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик события к событию. | CComponent |
| canGetProperty() | Определяет, можно ли прочитать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| createPageUrl() | Создает URL, подходящий для пагинации. | CPagination |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик события. | CComponent |
| disableBehavior() | Отключает присоединенное поведение. | CComponent |
| disableBehaviors() | Отключает все присоединенные к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает присоединенное поведение. | CComponent |
| enableBehaviors() | Включает все присоединенные к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. | CComponent |
| getCurrentPage() | Возвращает индекс текущей страницы (нумерация с нуля). По умолчанию 0. | CPagination |
| getEventHandlers() | Возвращает список присоединенных обработчиков событий для события. | CComponent |
| getItemCount() | Возвращает общее количество элементов. По умолчанию 0. | CPagination |
| getLimit() | Возвращает предел данных. Это может быть использовано для установки значения LIMIT для SQL-запроса, для извлечения текущей страницы данных. Возвращает то же значение, что и pageSize. | CPagination |
| getOffset() | Возвращает смещение данных. Это может быть использовано для установки значения OFFSET для SQL-запроса, для извлечения текущей страницы данных. | CPagination |
| getPageCount() | Возвращает количество страниц. | CPagination |
| getPageSize() | Возвращает количество элементов на странице. По умолчанию 10. | CPagination |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли для события присоединенные обработчики. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| raiseEvent() | Вызывает событие. | CComponent |
| setCurrentPage() | Устанавливает индекс текущей страницы (нумерация с нуля). | CPagination |
| setItemCount() | Устанавливает общее количество элементов. | CPagination |
| setPageSize() | Устанавливает количество элементов на странице. | CPagination |
Подробное описание свойств
currentPage свойство
public integer getCurrentPage(boolean $recalculate=true)
public void setCurrentPage(integer $value)
индекс текущей страницы (нумерация с нуля). По умолчанию 0.
itemCount свойство
public integer getItemCount()
public void setItemCount(integer $value)
общее количество элементов. По умолчанию 0.
limit свойство только для чтения (доступно с версии v1.1.0)
public integer getLimit()
предел данных. Может быть использован для установки значения LIMIT для SQL-запроса, чтобы получить текущую страницу данных. Возвращает то же значение, что и pageSize.
offset свойство только для чтения (доступно с версии v1.1.0)
public integer getOffset()
смещение данных. Может быть использовано для установки значения OFFSET в SQL-запросе для извлечения текущей страницы данных.
pageCount свойство только для чтения
public integer getPageCount()
количество страниц
pageSize свойство
public integer getPageSize()
public void setPageSize(integer $value)
количество элементов на странице. По умолчанию 10.
pageVar свойство
public string $pageVar;
имя переменной GET, хранящей индекс текущей страницы. По умолчанию 'page'.
params свойство
public array $params;
параметры (имя=>значение), которые следует использовать вместо GET при генерации URL-адресов пагинации. По умолчанию null, что означает использование имеющихся GET-параметров.
route свойство
public string $route;
маршрут (ID контроллера и ID действия) для отображения постраничного содержимого. По умолчанию пустая строка, что означает использование текущего маршрута.
validateCurrentPage свойство (доступно с версии v1.1.4)
public boolean $validateCurrentPage;
необходимо ли гарантировать, что currentPage возвращает допустимый номер страницы. Когда это свойство истинно, значение, возвращаемое currentPage, всегда будет между 0 и (pageCount-1). Поскольку pageCount зависит от правильного значения itemCount, это означает, что вам необходимо знать общее количество элементов данных, когда вы хотите получить доступ к currentPage. Это подходит для запросов на основе SQL, но может быть нецелесообразно для других типов запросов (например, MongoDB). В таких случаях вы можете установить это свойство в false, чтобы пропустить проверку (тогда вам нужно будет выполнить проверку самостоятельно). По умолчанию значение true.
Подробное описание методов
__construct() метод
public void __construct(integer $itemCount=0) | ||
| $itemCount | целое число | общее количество элементов. |
public function __construct($itemCount=0)
{
$this->setItemCount($itemCount);
}
Конструктор.
applyLimit() метод
public void applyLimit(CDbCriteria $criteria) | ||
| $criteria | CDbCriteria | критерии запроса, которые должны быть применены с ограничением |
public function applyLimit($criteria)
{
$criteria->limit=$this->getLimit();
$criteria->offset=$this->getOffset();
}
Применяет LIMIT и OFFSET к указанным критериям запроса.
createPageUrl() метод
public string createPageUrl(CController $controller, integer $page) | ||
| $controller | CController | контроллер, который создаст фактический URL-адрес |
| $page | целое число | страница, на которую должен указывать URL-адрес. Это индекс с нуля. |
| {return} | строка | созданный URL-адрес |
public function createPageUrl($controller,$page)
{
$params=$this->params===null ? $_GET : $this->params;
if($page>0) // page 0 is the default
$params[$this->pageVar]=$page+1;
else
unset($params[$this->pageVar]);
return $controller->createUrl($this->route,$params);
}
Создает URL-адрес, подходящий для пагинации. Этот метод главным образом вызывается паджинаторами при создании URL-адресов, используемых для пагинации. По умолчанию вызывается метод createUrl контроллера с информацией о странице. Вы можете переопределить этот метод, если ваша схема URL-адресов не такая, как поддерживается методом createUrl контроллера.
getCurrentPage() метод
public integer getCurrentPage(boolean $recalculate=true) | ||
| $recalculate | логическое значение | необходимо ли пересчитывать текущую страницу на основе размера страницы и количества элементов. |
| {return} | целое число | индекс текущей страницы с нуля. По умолчанию 0. |
public function getCurrentPage($recalculate=true)
{
if($this->_currentPage===null || $recalculate)
{
if(isset($_GET[$this->pageVar]))
{
$this->_currentPage=(int)$_GET[$this->pageVar]-1;
if($this->validateCurrentPage)
{
$pageCount=$this->getPageCount();
if($this->_currentPage>=$pageCount)
$this->_currentPage=$pageCount-1;
}
if($this->_currentPage<0)
$this->_currentPage=0;
}
else
$this->_currentPage=0;
}
return $this->_currentPage;
}
getItemCount() метод
public integer getItemCount() | ||
| {return} | целое число | общее количество элементов. По умолчанию 0. |
public function getItemCount()
{
return $this->_itemCount;
}
getLimit() метод (доступно с версии v1.1.0)
public integer getLimit() | ||
| {return} | целое число | ограничение данных. Может быть использовано для установки значения LIMIT в SQL-запросе для извлечения текущей страницы данных. Возвращает то же значение, что и pageSize. |
public function getLimit()
{
return $this->getPageSize();
}
getOffset() метод (доступно с версии v1.1.0)
public integer getOffset() | ||
| {return} | целое число | смещение данных. Может быть использовано для установки значения OFFSET в SQL-запросе для извлечения текущей страницы данных. |
public function getOffset()
{
return $this->getCurrentPage()*$this->getPageSize();
}
getPageCount() метод
public integer getPageCount() | ||
| {return} | целое число | количество страниц |
public function getPageCount()
{
return (int)(($this->_itemCount+$this->_pageSize-1)/$this->_pageSize);
}
getPageSize() метод
public integer getPageSize() | ||
| {return} | целое число | количество элементов на каждой странице. По умолчанию 10. |
public function getPageSize()
{
return $this->_pageSize;
}
setCurrentPage() метод
public void setCurrentPage(integer $value) | ||
| $value | целое число | индекс текущей страницы с нуля. |
public function setCurrentPage($value)
{
$this->_currentPage=$value;
$_GET[$this->pageVar]=$value+1;
}
setItemCount() метод
public void setItemCount(integer $value) | ||
| $value | целое число | общее количество элементов. |
public function setItemCount($value)
{
if(($this->_itemCount=$value)<0)
$this->_itemCount=0;
}
setPageSize() метод
public void setPageSize(integer $value) | ||
| $value | целое число | количество элементов на каждой странице |
public function setPageSize($value)
{
if(($this->_pageSize=$value)<=0)
$this->_pageSize=self::DEFAULT_PAGE_SIZE;
}
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CPagination