NAME
Tripletail::Pager - ページング処理
SYNOPSIS
my $pager = $TL->newPager('DB');
$pager->setCurrentPage($CGI->get('pageid'));
my $t = $TL->newTemplate('template.html');
if($pager->paging($t->node('paging'), 'SELECT * FROM foo WHERE a = ?', 999)) {
$t->node('paging')->add;
} else {
$t->node('nodata')->add;
}
DESCRIPTION
ページング処理を行う。
決められた形式のTripletail::Templateノードに展開する。
テンプレート形式
<!begin:paging>
<!begin:PrevLink><a href="<&PREVLINK>">←前ページ</a><!end:PrevLink>
<!begin:NoPrevLink>←前ページ<!end:NoPrevLink>
<!begin:PageNumLinks>
<!begin:ThisPage><&PAGENUM><!end:ThisPage>
<!begin:OtherPage>
<a href="<&PAGELINK>"><&PAGENUM></a>
<!end:OtherPage>
<!end:PageNumLinks>
<!begin:NextLink><a href="<&NEXTLINK>">次ページ→</a><!end:NextLink>
<!begin:NoNextLink>次ページ→<!end:NoNextLink>
...
<!begin:MaxRows>全<&MAXROWS>件<!end:MaxRows>
<!begin:FirstRow><&FIRSTROW>件目から<!end:FirstRow>
<!begin:LastRow><&LASTROW>件目までを表示中<!end:LastRow>
<!begin:MaxPages>全<&MAXPAGES>ページ<!end:MaxPages>
<!begin:CurPage>現在<&CURPAGE>ページ目<!end:CurPage>
...
<!begin:Row>
<!-- 行データを展開する <&XXX> タグを記述する -->
<!end:Row>
...
<!end:paging>
<!-- 以下は Pager クラスの処理とは関係ないため、無くても良い -->
<!begin:nodata>
一件もありません
<!end:nodata>
必須でないノードは次の通り:
MaxRows, FirstRow, LastRow, MaxPages,CurPage
これらのノードが存在しない場合は、単に無視される。
METHODS
- $TL->newPager
-
$pager = $TL->newPager $pager = $TL->newPager($db_group)
Pagerオブジェクトを作成。 2番目の形式では、 デフォルト の DBセット が使われる。デフォルトが設定されていなければ paging開始の時点でエラーとなる。
- setDbGroup
-
$pager->setDbGroup($db_group)
使用するDBのグループ名を指定する。
- setPageSize
-
$pager->setPageSize($line)
1ページに表示する行数を指定する。デフォルトは30。
- setCurrentPage
-
$pager->setCurrentPage($nowpage)
現在のページ番号を指定する。デフォルトは1。
- setMaxLinks
-
$pager->setMaxLinks($maxlinks)
各ページへのリンクを最大幾つ表示するかを指定する。デフォルトは10。
- setFormKey
-
$pager->setFormKey('PAGE')
ページ移動リンクに挿入される、ページ番号キーを指定する。デフォルトは"pageid"。
- setFormParam
-
$pager->setFormParam($CGI)
ページ移動リンクに追加されるフォームを指定する。デフォルトでは何も追加されない。
- setPagingType
-
$pager->setPagingType($type)
ページングの種類を選ぶ。
0の場合、最終ページを超えたページを指定した場合、undefが返る。 1の場合、最終ページを超えたページを指定した場合、最終ページが返る。
設定しなかった場合は0が設定される。
但し、1を選択した場合で、最終ページを超えるページを指定した場合、SQLを再度発行するため、通常より遅くなる。
- getPagingInfo
-
my $info = $pager->getPagingInfo
各種パラメータを返す。パラメータの内容は以下の通り。セットされてない場合はundefがセットされている。
- $info->{dbgroup}
-
使用するグループ名
- $info->{pagesize}
-
1ページに表示する行数
- $info->{current}
-
表示する(された)ページ番号
- $info->{maxlinks}
-
リンクの最大数
- $info->{formkey}
-
ページ移動リンクに挿入される、ページ番号キー
- $info->{formparam}
-
ページ移動リンクに追加されるフォーム。Tripletail::Formクラス
- $info->{pagingtype}
-
ページングの種類
- $info->{maxpages}
-
存在している最大ページ
- $info->{linkstart}
-
リンクの開始ページ数
- $info->{linkend}
-
リンクの終了ページ数
- $info->{maxrows}
-
全体の件数
- $info->{beginrow}
-
取得を開始した箇所
- $info->{rows}
-
取得した件数
- paging
-
$pager->paging($t->node('pagingblock'), $sql, @param) $pager->paging($t->node('pagingblock'), [$sql, $maxrows], @param)
指定したノードに、指定したSQLを実行してページングする。 展開するデータが1件も無い場合は 0 を、表示できるページ数を超えたページ数を指定 された場合は、setPagingTypeで設定されている値が0(デフォルト)であれば、undefが、 1であれば最終ページのデータ件数、それ以外の場合はデータ件数を返す。
$maxrows で件数のカウントを別途指定できる。 指定を省略した場合、SQL 文の先頭部分を SELECT COUNT(*) FROM ~ に書き換えたもの を使用して、自動的に件数をカウントする。 その際、GROUP BY を使用した場合は、結果ではなく結果の件数をカウントとして扱う。 UNION を使用した場合は正常に動作しない。
- pagingArray
-
$result = $pager->pagingArray($t->node('pagingblock'), $sql, @param) $result = $pager->pagingArray($t->node('pagingblock'), [$sql, $maxrows], @param)
指定したノードに、指定したSQLを実行してページングする。 Row ノードは展開せずに、ページング対象のデータを配列の配列へのリファレンスで返す。 展開するデータが1件も無い場合は 0 を、表示できるページ数を超えたページ数を指定 された場合は、setPagingTypeで設定されている値が0(デフォルト)であれば、undefが、 1であれば最終ページのデータを返す。
その他は "paging" と同じ。
- pagingHash
-
$result = $pager->pagingHash($t->node('pagingblock'), $sql, @param) $result = $pager->pagingHash($t->node('pagingblock'), [$sql, $maxrows], @param)
指定したノードに、指定したSQLを実行してページングする。 Row ノードは展開せずに、ページング対象のデータをハッシュの配列へのリファレンスで返す。 展開するデータが1件も無い場合は 0 を、表示できるページ数を超えたページ数を指定 された場合は、setPagingTypeで設定されている値が0(デフォルト)であれば、undefが、 1であれば最終ページのデータを返す。
その他は "paging" と同じ。
SEE ALSO
AUTHOR INFORMATION
Copyright 2006 YMIRLINK Inc. All Rights Reserved.
This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself
このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。
Address bug reports and comments to: tl@tripletail.jp
HP : http://tripletail.jp/