4.9.2 ビューにおけるページ付け

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

レコードをユーザへどのように見せるかは自由ですが、 HTML のテーブルタグを用いた表示がよく使われるでしょう。下の例は表組みを用いた例になります。ただし、ビューの中で利用できる PaginatorHelper は、この例のように制限されているわけではありません。

また、PaginatorHelper は、テーブルのカラムヘッダに簡単に入れられる並び替えの機能を提供します。

// app/views/recipes/list_recipes.ctp
<table>
	<tr> 
		<th><?php echo $paginator->sort('ID', 'id'); ?></th> 
		<th><?php echo $paginator->sort('Title', 'title'); ?></th> 
	</tr> 
	   <?php foreach($data as $recipe): ?> 
	<tr> 
		<td><?php echo $recipe['Recipe']['id']; ?> </td> 
		<td><?php echo $recipe['Recipe']['title']; ?> </td> 
	</tr> 
	<?php endforeach; ?> 
</table> 
  1. // app/views/recipes/list_recipes.ctp
  2. <table>
  3. <tr>
  4. <th><?php echo $paginator->sort('ID', 'id'); ?></th>
  5. <th><?php echo $paginator->sort('Title', 'title'); ?></th>
  6. </tr>
  7. <?php foreach($data as $recipe): ?>
  8. <tr>
  9. <td><?php echo $recipe['Recipe']['id']; ?> </td>
  10. <td><?php echo $recipe['Recipe']['title']; ?> </td>
  11. </tr>
  12. <?php endforeach; ?>
  13. </table>

PaginatorHelper の sort() メソッドがテーブルのカラムヘッダに出力するリンクをクリックすることで、ユーザはデータの並び順を変更することができます。

アソシエーションによって関連づいたテーブルのカラムを並び替えに使用することもできます。

<table>
	<tr> 
		<th><?php echo $paginator->sort('Title', 'title'); ?></th> 
		<th><?php echo $paginator->sort('Author', 'Author.name'); ?></th> 
	</tr> 
	   <?php foreach($data as $recipe): ?> 
	<tr> 
		<td><?php echo $recipe['Recipe']['title']; ?> </td> 
		<td><?php echo $recipe['Author']['name']; ?> </td> 
	</tr> 
	<?php endforeach; ?> 
</table> 
  1. <table>
  2. <tr>
  3. <th><?php echo $paginator->sort('Title', 'title'); ?></th>
  4. <th><?php echo $paginator->sort('Author', 'Author.name'); ?></th>
  5. </tr>
  6. <?php foreach($data as $recipe): ?>
  7. <tr>
  8. <td><?php echo $recipe['Recipe']['title']; ?> </td>
  9. <td><?php echo $recipe['Author']['name']; ?> </td>
  10. </tr>
  11. <?php endforeach; ?>
  12. </table>

最後に、ビューで表示するページ付けの要素であるページナビゲーションについて説明します。これも PaginationHelper によって提供される機能です。。

<!-- 現在のページ番号を表示する。 -->
<?php echo $paginator->numbers(); ?>
<!-- 次のページへのリンクを表示する。 -->
<?php
	echo $paginator->prev('« Previous ', null, null, array('class' => 'disabled'));
	echo $paginator->next(' Next »', null, null, array('class' => 'disabled'));
?> 
<!-- 「X of Y」を表示します。 X は現在のページ、 Y は総ページ数です。 -->
<?php echo $paginator->counter(); ?>
  1. <!-- 現在のページ番号を表示する。 -->
  2. <?php echo $paginator->numbers(); ?>
  3. <!-- 次のページへのリンクを表示する。 -->
  4. <?php
  5. echo $paginator->prev('« Previous ', null, null, array('class' => 'disabled'));
  6. echo $paginator->next(' Next »', null, null, array('class' => 'disabled'));
  7. ?>
  8. <!-- 「X of Y」を表示します。 X は現在のページ、 Y は総ページ数です。 -->
  9. <?php echo $paginator->counter(); ?>

counter() メソッドが出力する文言は、特別なマーカーを使うことで変更できます。

<?php
echo $paginator->counter(array(
	'format' => '合計 %pages% ページ中の %page% ページ目です。
			総レコード %count% のうち、  %start% 行目から %end% 行目までの %current% 行を表示しています。'
)); 
?>
  1. <?php
  2. echo $paginator->counter(array(
  3. 'format' => '合計 %pages% ページ中の %page% ページ目です。
  4. 総レコード %count% のうち、 %start% 行目から %end% 行目までの %current% 行を表示しています。'
  5. ));
  6. ?>

すべての URL の引数をページ付けの関数に送るには、次のコードをビューに書いてください。

	$paginator->options(array('url' => $this->passedArgs));
  1. $paginator->options(array('url' => $this->passedArgs));

あるいは、特定のパラメータのみを手動で渡すこともできます。

	$paginator->options(array('url' =>  array("0", "1")));
  1. $paginator->options(array('url' => array("0", "1")));