登録した外出記録を一覧で表示する画面を作成します。
データの取得
ルートの設定。 MemoryMap/routes/web.php
Route::get('/ichiranGamen', 'MemoryMapController@ichiranGamen');
コントローラーの設定。 MemoryMap/app/Http/Controllers/MemoryMapController.php
// 一覧画面を返却する
public function ichiranGamen(){
//インスタンス化
$data = gaishutsu_kiroku::orderBy('place_date', 'asc')->get();
return view('ichiranGamen', ['data' => $data]);
}
以下の記載でgaishutsu_kirokuテーブルを’place_date’の昇順(’asc’)で取得しています。
$data = gaishutsu_kiroku::orderBy('place_date', 'asc')->get();
取得したデータを’ichiranGamen’ビューファイルに渡します。
return view('ichiranGamen', ['data' => $data]);
取得したjsonデータをテーブルにセットする
MemoryMap/resources/views/ichiranGamen.blade.php
<!DOCTYPE HTML>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<TITLE>思い出MAP</TITLE>
<link rel="stylesheet" type="text/css" href="css/ichiranGamen.css" media="all">
</HEAD>
<BODY>
<header>
<p class="head_title">思い出<span>MAP</span></p>
<nav>
<ul>
<li><a href="/MemoryMap/public/displayMap">MAP</a></li>
<li><a href="/MemoryMap/public/torokuGamen">登録</a></li>
<li><a href="/MemoryMap/public/ichiranGamen">一覧</a></li>
</ul>
</nav>
</header>
<div class="container">
<div class="inline">
<table>
<thead>
<tr>
<th class='hidden'></th>
<th >出かけた日</th>
<th >出かけた場所</th>
</tr>
</thead>
<tbody>
<script>
<!--コントローラーから渡された$dataを取得 -->
var data = @json($data);
<!-- dataの数分繰り返し処理を実施しテーブルにセットする -->
for (var i = 0; i < data.length; i++) {
document.write("<tr class='border'>");
document.write("<td class='hidden'>");
document.write(data[i]['id']);
document.write("</td>");
document.write("<td>");
document.write(data[i]['place_date']);
document.write("</td>");
document.write("<td>");
document.write(data[i]['place_name']);
document.write("</td>");
document.write("</tr>")
}
</script>
</tbody>
</table>
</div>
</div>
</BODY>
</HTML>
tableタグの中でjavascriptのfor分を実行しています。取得したデータの分処”理を繰り返”します”。
“document.write” を記載することでHTMLタグを出力できます。
※今の段階では生のjavascriptで書いていますが今後フレームワーク(vue.js)を利用する予定です。
テーブルのデザインも解説します。MemoryMap/public/css/ichiranGamen.css
.container{
text-align: center;
margin-top: 30px;
}
table {
width: 50%;
margin: auto;
font-weight: bold;
border-collapse: collapse; /* セルの線を重ねる */
table-layout: fixed; /* セルの幅計算指定 */
}
th{
background-color:ghostwhite;
border-bottom: solid 3px #ffc107;
font-size: 20px;
padding: 10px;
}
tr:hover {
background-color: #ffa; /* マウスオーバー時の設定 */
}
tr:nth-child(odd) {
background: ghostwhite; /* 偶数のtrタグの背景色を変える */
}
tr:nth-child(odd):hover {
background: #ffa;/* マウスオーバー時の設定 */
}
.border{
height: 100px;
border: 1px solid #ccc;
}
.hidden{
display: none;
}
画面を表示すると以下の様なレイアウトになります。DBから取得したデータを一覧表示できました。
マウスを重ねると色が変わります。
次回は一覧画面から外出先の詳細画面に遷移できるようにします。