Laravelチュートリアル7


step.7では、

・destroy(削除)

について説明していきます。




destroy(削除)



Controller(コントローラー)

public function destroy(Task $task)
  {
    $task->delete();

    return redirect()->route('tasks.index');
  }

destroy()アクションは削除後、 / (一覧画面)へリダイレクトしています。

view は必要ありませんが、削除するためのボタンを設置する必要があります。

今回は 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}}</td>   ->description
            <td>{{ $task->deadline}}</td>
            <td><a href="{{ route('tasks.edit', $task) }}" class="btn btn-primary">編集</a>
              <form action="{{ route('tasks.destroy', $task) }}" method="post" class="d-inline ml-3">
                @csrf
                @method('delete')
                <button type="submit" class="btn btn-danger" onclick="return confirm('本当に削除してもよろしいですか?');">削除</button>
              </form>
            </td>
          </tr>
        @endforeach
      </tbody>
    </table>
  @endif
<a href="{{ route('tasks.create') }}" class="btn btn-primary">新規登録</a>
@endsection
<button type="submit" class="btn btn-danger" onclick="return confirm('本当に削除してもよろしいですか?');">削除</button>

@csrfは、の説明

とりあえずの画像

onclick="return confirm('本当に削除してもよろしいですか?');

削除ボタンをクリックすると、上記のように確認するポップアップがでます。


まとめ