【PHP/Laravel】indexアクションで一覧表示(トップページ)の作成

Laravelのcreate・storeアクションで一覧表示(トップページ)を作成する方法についてまとめました。

indexアクションで一覧表示(トップページ)の作成

①TasksController.phpに「indexアクション」を追加します。

TasksController.php

場所:app/Http/Controllers/TasksController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Task;
use App\Http\Requests;

class TasksController extends Controller
{

    public function create()
    {
        return view('tasks/create')->with('task', new Task());
    }

    public function store(Request $request)
    {
        $task = new Task();
        $task->fill($request->all());
        $task->save();
        return redirect()->route('tasks.index');
    }

    // indexアクションの追加
    public function index()
    {
        $tasks = Task::orderBy('updated_at', 'desc')->get();
        return view('tasks/index')->with('tasks', $tasks);
    }
}

② 「index.blade.php」にindex(一覧ページ)のViewを作成します。
場所:resources/views/tasks/index.blade.php

@extends('layouts.app')

@section('title', 'タスク一覧')

@section('content')

    <div class="panel panel-default">
        <div class="panel-heading">
            タスク一覧
        </div>
        <div class="panel-body">
            <table class="table table-striped task-table">
                <thead>
                    <th>タスク名</th>
                    <th>完了</th>
                    <th>編集</th>
                    <th>削除</th>
                </thead>
                <tbody>
                    @foreach ($tasks as $task)
                        <tr>
                            <td class="table-text">
                                {{ link_to_route('tasks.show', $task->name, $task->id) }}
                            </td>
                            <td class="table-text">
                                {{ $task->done ? '完了' : '未' }}
                            </td>
                            <td class="table-text">
                                {{ link_to_route('tasks.edit', '編集', $task->id, ['class' => 'btn btn-sm btn-default']) }}
                            </td>
                            <td class="table-text">
                                {{ Form::open(['route' => ['tasks.destroy', $task->id], 'method' => 'delete']) }}
                                    {{ Form::hidden('id', $task->id) }}
                                    {{ Form::submit('削除', ['class' => 'btn btn-sm btn-default']) }}
                                {{ Form::close() }}
                            </td>
                        </tr>
                    @endforeach
                </tbody>
            </table>
        </div>
    </div>

@endsection

実行結果

ブラウザで「http://localhost/example/public/tasks/」にアクセスすると、作成したトップページを確認できます。

関連ページ
1 【PHP入門】基礎文法とサンプルコード集
2 【PHP】Laravelフレームワーク入門
関連記事