自分なりの目線で情報を発信します。			
		×
[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をほんの少し。
					最新トラックバック				
				
					カレンダー				
				| 10 | 2025/11 | 12 | 
| 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 | 
					ブログ内検索				
				
					最古記事				
				(09/18)
(09/23)
(10/01)
(10/09)
(10/10)
				
					カウンター				
				
					アク解アナライズ				
				
					ビジター