WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
EloquentORMでデータの一覧表示

EloquentORMでデータの一覧表示

このエントリーをはてなブックマークに追加

「EloquentORMでデータ作成」で作成したデータを一覧表示するためのページを作成してみたいと思います。

一覧表示用のルーターの作成

まず、一覧表示用のルーターを下記のように記述します。

app/routes.php
Route::get('collection',function(){
 $data['collections']=Collection::orderBy('id','desc')->paginate(10);
 return View::make('collection/view',$data);
 });
  • 2行目:orderByメソッドで、idフィールドを降順で並べ替えています。
  • 2行目:paginateメソッド*で、1ページあたりのデータ数を10ずつに区切っています。
  • 3行目:app/views/collection/view.blade.phpにデータを引き渡してビューを表示しています。

一覧表示用ビューファイルの作成

入力したデータの一覧表示用のビューファイルを下記のように作成します。

app/views/collection/view.blade.php
@extends('layouts.hpb')
 @section('content')
 <div id="hpb-wrapper">
 <!-- main -->
 <div id="hpb-main">
 <h4>コレクションリスト</h4>
 <table border="1" width="95%" cellspacing="0" cellpadding="2" id="HPB_TABLE_2_A_130515135652" class="hpb-cnt-tb1">
 <col span="1" valign="middle" align="center">
 <tbody>
 <tr valign="middle" align="center">
 <th class="hpb-cnt-tb-th1" width="59" height="1">&nbsp;コード</th>
 <th class="hpb-cnt-tb-th1" width="232" height="1">&nbsp;タイトル</th>
 <th class="hpb-cnt-tb-th1" height="1">&nbsp;カテゴリ</th>
 </tr>
 <?php $i=1?>
 @foreach($collections as $row)
 <?php $i%2==0 ? $n=1:$n=2;?>
 <tr>
 <td class="hpb-cnt-tb-cell{{ $n }}">{{ $row->code }}</td>
 <td class="hpb-cnt-tb-cell{{ $n }}">{{ HTML::link('collection/detail/'.$row->id,$row->title) }}</td>
 <td class="hpb-cnt-tb-cell{{ $n }}">{{ $row->category }}</td>
 </tr>
 <?php $i++;?>
 @endforeach
 <!--<td class="hpb-cnt-tb-cell2" width="59" height="31">&nbsp;</td>
 <td class="hpb-cnt-tb-cell2" width="232" height="31">&nbsp;</td>
 <td class="hpb-cnt-tb-cell2" height="31">&nbsp;</td>-->
 </tbody>
 </table>
 </div>
 <div id="pagetop"><a href="#hpb-container">このページの先頭へ</a></div>
 <!-- main end -->
 {{ $collections->links() }}
 </div>
 <!-- wrapper end -->
 @stop
  • 16-24行目:ルーターから受け取ったデータを繰り返して表示しています。
  • 15,17,23行目:テーブルの背景色を奇数と偶数で変えるために記述しています。奇数の場合は、hpb-cnt-tb-cell2を表示し、偶数の場合は、hpb-cnt-tb-cell1の背景色を表示しています(ホームページビルダーのスタイルシートの仕様)。つまり、背景色を白とグレーで交互に表示するようにしています。
  • 20行目:データのIDをルートパラメータとして明細ページへのリンクを生成しています。
  • 33行目:linksメソッドで、分割ページのページリンク一覧を表示しています。

ブラウザで確認してみます。

laravel4_076

  • ページリンクのレイアウト(スタイルシート)は、Twitter Bootstrapを利用しています。
  • Laravel4のページリンクは、Twitter Bootstrapとコンパチブルに作成されていますので、ベーステンプレートのヘッダー部分に下記の8行目を追加しています。
    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Content-Style-Type" content="text/css">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <title></title>
    {{ HTML::style('tbs/css/bootstrap.min.css') }}
    {{ HTML::style('hpb/hpbparts.css') }}
    {{ HTML::style('hpb/container_9H_2c_top.css') }}
    {{ HTML::style('hpb/main_9H_2c.css') }}
    {{ HTML::style('hpb/user.css') }}
    {{ HTML::style('hpb/table.css') }}
    </head>

 

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です