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

にアクセスすると、以下のような画面が表示されます。


画面

まとめ