クラス yii\data\Pagination
継承 | yii\data\Pagination » yii\base\BaseObject |
---|---|
実装 | yii\base\Configurable, yii\web\Linkable |
利用可能バージョン | 2.0 |
ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/data/Pagination.php |
Pagination は、データ項目のページネーションに関連する情報を表します。
データを複数のページでレンダリングする必要がある場合、Pagination は、合計項目数、ページサイズ、現在のページなどの情報を表すために使用できます。これらの情報は、ページャーに渡して、ページネーションボタンまたはリンクをレンダリングできます。
次の例は、Pagination オブジェクトを作成し、それをページャーに渡す方法を示しています。
コントローラアクション
public function actionIndex()
{
$query = Article::find()->where(['status' => 1]);
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count()]);
$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'models' => $models,
'pages' => $pages,
]);
}
ビュー
foreach ($models as $model) {
// display $model here
}
// display pagination
echo LinkPager::widget([
'pagination' => $pages,
]);
Pagination の詳細と使用方法については、ページネーションに関するガイド記事を参照してください。
公開プロパティ
公開メソッド
定数
定数 | 値 | 説明 | 定義元 |
---|---|---|---|
LINK_FIRST | 'first' | yii\data\Pagination | |
LINK_LAST | 'last' | yii\data\Pagination | |
LINK_NEXT | 'next' | yii\data\Pagination | |
LINK_PREV | 'prev' | yii\data\Pagination |
プロパティの詳細
デフォルトのページサイズ。このプロパティは、$pageSizeが$paramsからの$pageSizeParamによってページサイズを決定できない場合に返されます。
createUrl()によって作成された URL に常にページパラメータを含めるかどうか。false で、$page が 0 の場合、ページパラメータは URL に含まれません。
データの制限。これは、現在のデータのページを取得するための SQL ステートメントの LIMIT 値を設定するために使用できます。ページサイズが無限の場合は、値 -1 が返されることに注意してください。
ナビゲーション用のリンク。配列のキーはリンクの目的(例:LINK_FIRST)を指定し、配列の値は対応するURLです。
データのオフセット。これは、データの現在のページをフェッチするためのSQLステートメントでOFFSET値を設定するために使用される場合があります。
ページあたりの項目数。1未満の場合は、ページサイズは無限であり、したがって単一のページにすべての項目が含まれることを意味します。
ページサイズの制限。最初の配列要素は最小ページサイズを定義し、2番目の要素は最大ページサイズを定義します。これがfalseの場合、$pageSizeは常に$defaultPageSizeの値を返す必要があることを意味します。
ページサイズを格納するパラメータの名前。
参照:$params。
現在のページ番号を取得し、新しいページネーションURLを作成するために使用する必要があるパラメータ(name => value)。設定されていない場合は、$_GETのすべてのパラメータが代わりに使用されます。
すべてのリンクにハッシュを追加するには、array_merge($_GET, ['#' => 'my-hash'])
を使用します。
$pageParamでインデックス付けされた配列要素は、現在のページ番号(デフォルトは0)と見なされます。一方、$pageSizeParamでインデックス付けされた要素は、ページサイズ(デフォルトは$defaultPageSize)として扱われます。
ページングされたコンテンツを表示するためのコントローラアクションのルート。設定されていない場合は、現在リクエストされているルートを使用することを意味します。
ページネーションURLの作成に使用されるURLマネージャー。設定されていない場合は、「urlManager」アプリケーションコンポーネントが使用されます。
$page が有効な範囲内にあるかどうかをチェックするかどうか。このプロパティが true の場合、$page の値は常に 0 と ($pageCount-1) の間になります。$pageCount は $totalCount の正しい値に依存しますが、場合によっては (例: MongoDB) 利用できないことがあるため、ページ番号の検証を無効にするためにこのプロパティを false に設定することができます。そうすることで、$page は $params 内の $pageParam によってインデックスされた値を返します。
メソッド詳細
定義元: yii\base\BaseObject::__call()
クラスメソッドではない名前付きメソッドを呼び出します。
不明なメソッドが呼び出されたときに暗黙的に呼び出される PHP のマジックメソッドであるため、このメソッドを直接呼び出さないでください。
public mixed __call ( $name, $params ) | ||
$name | string |
メソッド名 |
$params | array |
$params |
メソッドのパラメータ | return |
mixed |
---|---|---|
メソッドの戻り値 | throws |
yii\base\UnknownMethodException |
public function __call($name, $params)
{
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
コンストラクタ。
定義元: yii\base\BaseObject::__construct()
- デフォルトの実装では、次の2つのことを行います。
- 与えられた設定
$config
でオブジェクトを初期化します。
init() を呼び出します。
- 子クラスでこのメソッドがオーバーライドされる場合、推奨されるのは
- コンストラクタの最後のパラメータが、ここでの
$config
のような設定配列であること。
コンストラクタの最後に親の実装を呼び出すこと。 | ||
public void __construct ( $config = [] ) | array |
$config |
public function __construct($config = [])
{
if (!empty($config)) {
Yii::configure($this, $config);
}
$this->init();
}
オブジェクトプロパティの値を返します。
定義元: yii\base\BaseObject::__get()
$value = $object->property;
の実行時に暗黙的に呼び出される PHP のマジックメソッドであるため、このメソッドを直接呼び出さないでください。
__set() も参照してください。 | ||
$name | string |
public mixed __get ( $name ) |
メソッドのパラメータ | return |
$name |
---|---|---|
メソッドの戻り値 | プロパティ名 |
プロパティの値 |
メソッドの戻り値 | yii\base\UnknownPropertyException |
プロパティが定義されていない場合 |
public function __get($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter();
} elseif (method_exists($this, 'set' . $name)) {
throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
}
throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}
プロパティが書き込み専用の場合
プロパティが設定されているかどうか(つまり、定義されていて null でないかどうか)を確認します。
定義元: yii\base\BaseObject::__isset()
isset($object->property)
の実行時に暗黙的に呼び出される PHP のマジックメソッドであるため、このメソッドを直接呼び出さないでください。
プロパティが定義されていない場合は、false が返されることに注意してください。 | ||
$name | string | |
メソッドのパラメータ | boolean |
---|
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
return false;
}
定義元: yii\base\BaseObject::__set() | ||
$name | string | |
$object->property = $value; の実行時に暗黙的に呼び出される PHP のマジックメソッドであるため、このメソッドを直接呼び出さないでください。 |
return |
$name |
メソッドの戻り値 | プロパティ名 |
プロパティの値 |
---|---|---|
メソッドの戻り値 | yii\base\UnknownPropertyException |
__get() も参照してください。 |
public function __set($name, $value)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter($value);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
} else {
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
}
定義元: yii\base\BaseObject::__unset() | ||
$name | string |
public mixed __get ( $name ) |
メソッドの戻り値 | yii\base\UnknownPropertyException |
|
---|
public function __unset($name)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter(null);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
}
}
https://www.php.net/manual/en/function.unset.php も参照してください。
プロパティを読み取ることができるかどうかを示す値を返します。
public void __unset ( $name )
- $name
- プロパティが読み取り専用の場合。
定義元: yii\base\BaseObject::canGetProperty() | ||
$name | string |
public mixed __get ( $name ) |
プロパティは、以下の場合に読み取り可能です。 | boolean |
クラスに、指定された名前に関連付けられたゲッターメソッドがある場合 (この場合、プロパティ名はケースインセンシティブです)。 |
メソッドのパラメータ | boolean |
クラスに、指定された名前のメンバー変数がある場合 ( |
---|
public function canGetProperty($name, $checkVars = true)
{
return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}
定義場所: yii\base\BaseObject::canSetProperty()
プロパティを設定できるかどうかを示す値を返します。
プロパティが書き込み可能であるための条件は以下のとおりです。
- クラスが指定された名前に関連付けられたセッターメソッドを持っている場合(この場合、プロパティ名は大小文字を区別しません)。
- プロパティが読み取り専用の場合。
canGetProperty() も参照してください。
public boolean canSetProperty ( $name, $checkVars = true ) | ||
$name | string |
public mixed __get ( $name ) |
プロパティは、以下の場合に読み取り可能です。 | boolean |
クラスに、指定された名前に関連付けられたゲッターメソッドがある場合 (この場合、プロパティ名はケースインセンシティブです)。 |
メソッドのパラメータ | boolean |
プロパティが書き込み可能かどうか |
---|
public function canSetProperty($name, $checkVars = true)
{
return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}
::class
を使用してください。
定義場所: yii\base\BaseObject::className()
このクラスの完全修飾名を返します。
public static string className ( ) | ||
メソッドのパラメータ | string |
このクラスの完全修飾名。 |
---|
public static function className()
{
return get_called_class();
}
指定されたページ番号でページネーションに適した URL を作成します。
このメソッドは、主にページングを実行するために使用されるURLを作成する際にページャーによって呼び出されます。
参照
public string createUrl ( $page, $pageSize = null, $absolute = false ) | ||
$page | integer |
URLが指す必要がある、ゼロベースのページ番号。 |
$pageSize | integer|null |
各ページの項目数。設定されていない場合は、$pageSize の値が使用されます。 |
$absolute | boolean |
絶対URLを作成するかどうか。デフォルトは |
メソッドのパラメータ | string |
作成されたURL |
---|
public function createUrl($page, $pageSize = null, $absolute = false)
{
$page = (int) $page;
$pageSize = (int) $pageSize;
if (($params = $this->params) === null) {
$request = Yii::$app->getRequest();
$params = $request instanceof Request ? $request->getQueryParams() : [];
}
if ($page > 0 || $page == 0 && $this->forcePageParam) {
$params[$this->pageParam] = $page + 1;
} else {
unset($params[$this->pageParam]);
}
if ($pageSize <= 0) {
$pageSize = $this->getPageSize();
}
if ($pageSize != $this->defaultPageSize) {
$params[$this->pageSizeParam] = $pageSize;
} else {
unset($params[$this->pageSizeParam]);
}
$params[0] = $this->route === null ? Yii::$app->controller->getRoute() : $this->route;
$urlManager = $this->urlManager === null ? Yii::$app->getUrlManager() : $this->urlManager;
if ($absolute) {
return $urlManager->createAbsoluteUrl($params);
}
return $urlManager->createUrl($params);
}
public integer getLimit ( ) | ||
メソッドのパラメータ | integer |
データの制限。これは、現在のデータのページを取得するための SQL ステートメントの LIMIT 値を設定するために使用できます。ページサイズが無限の場合は、値 -1 が返されることに注意してください。 |
---|
public function getLimit()
{
$pageSize = $this->getPageSize();
return $pageSize < 1 ? -1 : $pageSize;
}
最初のページ、最後のページ、次のページ、前のページに移動するためのリンクのセット全体を返します。
public array getLinks ( $absolute = false ) | ||
$absolute | boolean |
生成されたURLを絶対URLにするかどうか。 |
メソッドのパラメータ | array |
ナビゲーション用のリンク。配列のキーはリンクの目的(例:LINK_FIRST)を指定し、配列の値は対応するURLです。 |
---|
public function getLinks($absolute = false)
{
$currentPage = $this->getPage();
$pageCount = $this->getPageCount();
$links = [Link::REL_SELF => $this->createUrl($currentPage, null, $absolute)];
if ($pageCount > 0) {
$links[self::LINK_FIRST] = $this->createUrl(0, null, $absolute);
$links[self::LINK_LAST] = $this->createUrl($pageCount - 1, null, $absolute);
if ($currentPage > 0) {
$links[self::LINK_PREV] = $this->createUrl($currentPage - 1, null, $absolute);
}
if ($currentPage < $pageCount - 1) {
$links[self::LINK_NEXT] = $this->createUrl($currentPage + 1, null, $absolute);
}
}
return $links;
}
public integer getOffset ( ) | ||
メソッドのパラメータ | integer |
データのオフセット。これは、データの現在のページをフェッチするためのSQLステートメントでOFFSET値を設定するために使用される場合があります。 |
---|
public function getOffset()
{
$pageSize = $this->getPageSize();
return $pageSize < 1 ? 0 : $this->getPage() * $pageSize;
}
0から始まる現在のページ番号を返します。
public integer getPage ( $recalculate = false ) | ||
$recalculate | boolean |
ページサイズと項目数に基づいて現在のページを再計算するかどうか。 |
メソッドのパラメータ | integer |
0から始まる現在のページ番号。 |
---|
public function getPage($recalculate = false)
{
if ($this->_page === null || $recalculate) {
$page = (int) $this->getQueryParam($this->pageParam, 1) - 1;
$this->setPage($page, true);
}
return $this->_page;
}
public integer getPageCount ( ) | ||
メソッドのパラメータ | integer |
ページ数 |
---|
public function getPageCount()
{
$pageSize = $this->getPageSize();
if ($pageSize < 1) {
return $this->totalCount > 0 ? 1 : 0;
}
$totalCount = $this->totalCount < 0 ? 0 : (int) $this->totalCount;
return (int) (($totalCount + $pageSize - 1) / $pageSize);
}
1ページあたりの項目数を返します。
デフォルトでは、このメソッドは $params の $pageSizeParam でページサイズを判別しようとします。この方法でページサイズを判別できない場合は、$defaultPageSize が返されます。
$pageSizeLimit も参照してください。
public integer getPageSize ( ) | ||
メソッドのパラメータ | integer |
ページあたりの項目数。1未満の場合は、ページサイズは無限であり、したがって単一のページにすべての項目が含まれることを意味します。 |
---|
public function getPageSize()
{
if ($this->_pageSize === null) {
if (empty($this->pageSizeLimit) || !isset($this->pageSizeLimit[0], $this->pageSizeLimit[1])) {
$pageSize = $this->defaultPageSize;
$this->setPageSize($pageSize);
} else {
$pageSize = (int) $this->getQueryParam($this->pageSizeParam, $this->defaultPageSize);
$this->setPageSize($pageSize, true);
}
}
return $this->_pageSize;
}
指定されたクエリパラメータの値を返します。
このメソッドは、$params から指定された名前のパラメーター値を返します。値が存在しない場合は Null が返されます。
protected string|null getQueryParam ( $name, $defaultValue = null ) | ||
$name | string |
パラメーター名 |
$defaultValue | string|null |
$params に指定されたパラメーターが存在しない場合に返される値。 |
メソッドのパラメータ | string|null |
パラメーター値 |
---|
protected function getQueryParam($name, $defaultValue = null)
{
if (($params = $this->params) === null) {
$request = Yii::$app->getRequest();
$params = $request instanceof Request ? $request->getQueryParams() : [];
}
return isset($params[$name]) && is_scalar($params[$name]) ? $params[$name] : $defaultValue;
}
定義場所: yii\base\BaseObject::hasMethod()
メソッドが定義されているかどうかを示す値を返します。
デフォルトの実装は、PHP関数 method_exists()
の呼び出しです。PHPのマジックメソッド __call()
を実装した場合は、このメソッドをオーバーライドできます。
public boolean hasMethod ( $name ) | ||
$name | string |
メソッド名 |
メソッドのパラメータ | boolean |
メソッドが定義されているかどうか |
---|
public function hasMethod($name)
{
return method_exists($this, $name);
}
定義場所: yii\base\BaseObject::hasProperty()
プロパティが定義されているかどうかを示す値を返します。
プロパティは、以下の場合に定義されているとみなされます。
- クラスが指定された名前に関連付けられたゲッターまたはセッターメソッドを持っている場合(この場合、プロパティ名は大小文字を区別しません)。
- プロパティが読み取り専用の場合。
参照
public boolean hasProperty ( $name, $checkVars = true ) | ||
$name | string |
public mixed __get ( $name ) |
プロパティは、以下の場合に読み取り可能です。 | boolean |
クラスに、指定された名前に関連付けられたゲッターメソッドがある場合 (この場合、プロパティ名はケースインセンシティブです)。 |
メソッドのパラメータ | boolean |
プロパティが定義されているかどうか |
---|
public function hasProperty($name, $checkVars = true)
{
return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}
定義場所: yii\base\BaseObject::init()
オブジェクトを初期化します。
このメソッドは、オブジェクトが指定された設定で初期化された後、コンストラクターの最後に呼び出されます。
public void init ( ) |
public function init()
{
}
現在のページ番号を設定します。
public void setPage ( $value, $validatePage = false ) | ||
$object->property = $value; の実行時に暗黙的に呼び出される PHP のマジックメソッドであるため、このメソッドを直接呼び出さないでください。 |
integer |
現在のページのゼロベースのインデックス。 |
$validatePage | boolean |
ページ番号を検証するかどうか。ページ番号を検証するには、$validatePageとこのパラメータの両方がtrueである必要があることに注意してください。 |
public function setPage($value, $validatePage = false)
{
if ($value === null) {
$this->_page = null;
} else {
$value = (int) $value;
if ($validatePage && $this->validatePage) {
$pageCount = $this->getPageCount();
if ($value >= $pageCount) {
$value = $pageCount - 1;
}
}
if ($value < 0) {
$value = 0;
}
$this->_page = $value;
}
}
public void setPageSize ( $value, $validatePageSize = false ) | ||
$object->property = $value; の実行時に暗黙的に呼び出される PHP のマジックメソッドであるため、このメソッドを直接呼び出さないでください。 |
integer |
1ページあたりの項目数。 |
$validatePageSize | boolean |
ページサイズを検証するかどうか。 |
public function setPageSize($value, $validatePageSize = false)
{
if ($value === null) {
$this->_pageSize = null;
} else {
$value = (int) $value;
if ($validatePageSize && isset($this->pageSizeLimit[0], $this->pageSizeLimit[1])) {
if ($value < $this->pageSizeLimit[0]) {
$value = $this->pageSizeLimit[0];
} elseif ($value > $this->pageSizeLimit[1]) {
$value = $this->pageSizeLimit[1];
}
}
$this->_pageSize = $value;
}
}
コメントするには、サインアップまたはログインしてください。