Laravelチュートリアル4
step.4では、
・view(ビュー)
・Controller(コントローラー)
について説明していきます。
view(ビュー)
viewとは、Controllerがリクエストしたものを、レスポンスとして返す Web ページのことです。
bladeとは、Laravelのテンプレートエンジンの1つです。phpコードを直接、記述することもできます。
テンプレートの継承なども行うことができ、とても便利です。
一覧画面を表示するviewを作成
resources/views/直下にtasksというフォルダを作成し、その中にindex.blade.phpを作成します。
resources/views/tasks/index.blade.php
@extends('layouts.app')
@section('content')
<h3>タスク一覧</h3>
<hr />
@if (count($tasks) > 0)
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>タスク名</th>
<th>ステータス</th>
<th>期限</th>
<th>更新日時</th>
</tr>
</thead>
<tbody>
@foreach ($tasks as $task)
<tr>
<td>{{ $task->id }}</td>
<td>{{ $task->name }}</a></td>
<td>{{ $task->status->description }}</td>
<td>{{ $task->deadline }}</td>
</tr>
@endforeach
</tbody>
</table>
@endif
@endsection
@extendsでlayoutsフォルダの中にあるlayout.blade.phpを継承しています。
@section('content')は、contentnoの挿入です。
上記のコードは、$tasksというレコードが1つ以上あれば、
@foreach ($tasks as $task)
で、1つずつデータを取得します。
$task->idは、 id カラム
$task->nameは、 nameカラム
$task->status->descriptionは、statusカラム(今回はenum型を使用しています。)
$task->deadlineは、 deadlineカラム
各カラムのデータを表示します。
Controller(コントローラー)
Controllerとは、リクエストを受け取り、それらを処理するところです。
Controllerの作成コマンド
php artisan make:controller TaskController
app/Http/Controllers/TasksController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TaskController extends Controller
{
//
}
ファイルの中にはまだ何も処理は書かれていません。
index(一覧画面)
以下、index()の処理を書き足したコードです。
<?php
namespace App\Http\Controllers;
use App\Task;
use Illuminate\Http\Request;
class TaskController extends Controller
{
public function index()
{
$tasks = Task::all();
return view('tasks.index', compact('tasks'));
}
}
Model の全レコードを取得するには
App\Task::all()
全レコードを取得し、
return view('tasks.index', compact('tasks'));
view() で、tasks.indexを呼び出しています。
resources/viewにファイルを作成するので、フォルダ名.ファイル名 とします。
第二引数の
compact('tasks')
は、tasks.indexにtasksを渡すことで、viewでも$tasksが使用できるように定義しています。
ルーティング
web.phpにルーティングを追加します。
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::resource('tasks', 'TaskController');
ルーティング追加
Route::resource('tasks', 'TaskController');
http://127.0.0.1:8000/tasks
にアクセスすると、以下のような画面が表示されます。
画面
まとめ