自分なりの目線で情報を発信します。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Zend_Paginatorを使って、簡単なページング付き一覧を作ってみました。
以下のテーブルからデータを取得して一覧を表示します。
■テーブル名
- user
■カラム定義
- id INT
- name VARCHAR(16)
-
<?php
-
-
class UserController extends Zend_Controller_Action
-
{
-
// ユーザー一覧表示
-
public function userListAction()
-
{
-
// ページ番号のリクエストがあれば取得(無ければ1ページ目とする)
-
$pagenum = $this->getRequest()->getParam('page', 1);
-
// DBアダプタ生成
-
'host' => 'localhost',
-
'username' => 'xxxx',
-
'password' => 'xxxx',
-
'dbname' => 'xxxx'
-
));
-
// SQL作成
-
$select = $dbAdapter->select()
-
// ページネーターを取得
-
$adapter = new Zend_Paginator_Adapter_DbSelect($select);
-
$paginator = new Zend_Paginator($adapter);
-
// 現在ページを設定
-
$paginator->setCurrentPageNumber($pagenum);
-
// 1ページあたりの表示件数を設定
-
$paginator->setItemCountPerPage(10);
-
// ビューにページネーターを渡す
-
$this->view->assign('userPaginator', $paginator);
-
// ビューを表示
-
$this->renderScript('admin/user_list.php');
-
}
-
}
-
-
// end of file
リクエストを受け付けるアクションです。
テーブルからデータを取得するZend_Paginatorを、 ビューに渡しています。
Zend_Paginator用のアダプタには以下の種類があるそうですが、
普通にDBのテーブルから取得するために、DbSelectアダプタを使用しています。
<Zend_Paginator用のアダプタ>
アダプタ | 説明 |
---|---|
Array | PHP の配列を使用します。 |
DbSelect | Zend_Db_Select のインスタンスを使用し、配列を返します。 |
DbTableSelect | Zend_Db_Table_Select のインスタンスを使用し、 Zend_Db_Table_Rowset_Abstractのインスタンスを返します。 これは、結果セットについての追加情報 (カラム名など) を提供します。 |
Iterator | Iterator のインスタンスを使用します。 |
Null | データのページ処理を管理する際に Zend_Paginator を使用しません。その場合でもページ処理コントロールの機能を使うことはできます。 |
■user_list.php
-
<html>
-
<head>
-
<title>ユーザー一覧</title>
-
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
-
</head>
-
<body>
-
<h1>ユーザー一覧</h1>
-
<table summary="ユーザー一覧">
-
<thead>
-
<tr>
-
<th>ID</th>
-
<th>名前</th>
-
</tr>
-
</thead>
-
<tfoot></tfoot>
-
<tbody>
-
<?php foreach($this->userPaginator as $key => $user): ?>
-
<tr>
-
<td>
-
<?php echo $user['id']; ?>
-
</td>
-
<td>
-
<?php echo $user['name']; ?>
-
</td>
-
</tr>
-
<?php endforeach; ?>
-
<?php if (count($this->userPaginator) === 0): ?>
-
<tr>
-
<td colspan="2">
-
データがありません
-
</td>
-
</tr>
-
<?php endif; ?>
-
</tbody>
-
</table>
-
<!-- ページネーションリンクを表示 -->
-
<?php echo $this->paginationControl(
-
$this->userPaginator,
-
'Sliding',
-
'pagination/my_pagination_control.phtml'
-
);
-
?>
-
</body>
-
</html>
一覧表示用のビュースクリプトです。
コントローラーから渡されたページネーターを使って、一覧を表示しています。
Zend_PaginatorはIteratorAggregateインターフェイスを実装しているため、
foreach文で順次処理をすることができています。
また、Countableインターフェイスも実装しているため、
count()で件数を取得することができます。
37~42行目に、ページネーションリンクを表示するための記述をしています。
引数は順番に、
Zend_Paginatorのインスタンス
スクロール形式
ビュースクリプト
となっています。
第4引数も指定できるのですが、そのサンプルはまた後日に。
第4引数も指定できるのですが、そのサンプルはまた後日に。
スクロール形式には、以下4種類があります。
<Zend_Paginatorのスクロール形式>
スクロール形式 | 説明 |
---|---|
All | すべてのページを返します。 総ページ数が比較的少なめのときなど、 ドロップダウンメニュー形式でページ選択をさせる際に便利です。 そのような場合は、利用できるすべてのページを 一度にユーザに見せることになるでしょう。 |
Elastic | Google 風のスクロール形式で、 ユーザがページを移動するのにあわせて拡大・縮小します。 |
Jumping | ユーザがページを進めるにつれて、 ページ番号が表示範囲の最後に向けて進んでいきます。 表示範囲を超えると、新しい範囲の最初の位置に移動します。 |
Sliding | Yahoo! 風のスクロール形式で、 現在表示されているページが常にページ範囲の中央 (あるいは可能な限りそれに近い場所) にあるようにします。これがデフォルトの形式です。 |
PR
お知らせ
最新記事
(03/11)
(02/23)
(01/08)
(12/28)
(11/18)
カテゴリー
プロフィール
HN:
shusatoo
性別:
男性
自己紹介:
基本PHP。JavaScriptちょっとだけ。Javaをほんの少し。
最新トラックバック
カレンダー
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
ブログ内検索
最古記事
(09/18)
(09/23)
(10/01)
(10/09)
(10/10)
カウンター
アク解アナライズ
ビジター