Kohana データベースへの登録とページネーション 〜 ページネーション 〜
データベース登録できたので、次はページネーションを。
同梱モジュールには含まれていない様子だったので、さっさとググッて見つけてきました。
kloopko / kohana-pagination [ https://github.com/kloopko/kohana-pagination ]
ページからダウンロードしてきて、展開したら modules/ 以下にコピーします。
次に bootstrap.php に追加。
/**
* Enable modules. Modules are referenced by a relative or absolute path.
*/
Kohana::modules(array(
// 'auth' => MODPATH.'auth', // Basic authentication
// 'cache' => MODPATH.'cache', // Caching with multiple backends
// 'codebench' => MODPATH.'codebench', // Benchmarking tool
'database' => MODPATH.'database', // Database access
// 'image' => MODPATH.'image', // Image manipulation
'orm' => MODPATH.'orm', // Object Relationship Mapping
// 'unittest' => MODPATH.'unittest', // Unit testing
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
'pagination' => MODPATH.'pagination',
));
pagination というディレクトリでコピーしたので MODPATH.’pagination’ となっています。
追記するのはコントローラーとビューの2つ。
コントローラーに追記
$_POST の if 文の前に追加します。
$all_address = ORM::factory('address');
$pagination = Pagination::factory(array(
'item_per_page' => 10,
'total_items' => $all_address->count_all(),
));
$addresses = $all_address->limit($pagination->items_per_page)
->offset($pagination->offset)
->find_all();
$view = View::factory('address/create')
->set('pagination', $pagination)
->set('addresses', $addresses)
->bind('errors', $errors);
特に絞り込むような条件もないので、全件の件数を 4行目で pagination に設定し、1ページ10件ずつ(item_per_page) に設定します。
10件ずつ区切って表示するため、 limit() および offset() にそれぞれ、 item_per_page と offset を指定し取得範囲を変動させます。
結果を、先ほどの view に set() でビューに渡せば完了です。
ビューに追記
<?php
echo $pagination->render();
?>
<?php echo $pagination->total_items; ?>件登録があります
<table>
<? foreach ($addresses as $address): ?>
<tr>
<td><?php echo $address->firstname; ?></td>
<td><?php echo $address->lastname; ?></td>
</tr>
<?php endforeach; ?>
</table>
create.php に最後に上記を追記。
1行目の render() によって、ページ送りが表示されます。
また、このままではページ送りが First や Last、Next といった英語表記になっています。
しかし i18n による国際化の仕組みによって日本語にすることができます。
application/i18n/ に配下に ja.php ファイルを作成。
以下のように記述します。
<?php defined('SYSPATH') or die('No direct script access.');
return array(
'First' => '最初へ',
'Previous' => '前へ',
'Next' => '次へ',
'Last' => '最後へ',
);
これによって、日本語表示になります。
[...] 前回の記事のままでは、ページ指定が query_string 設定となり ?page_id= となっていました。 これを route 設定に変更します。 [...]
Kohana で pjax をしてみたよ! « hampom TODAY
2012年 1月 6日 6:13 PM