Laravel | Todo | Update の実装

ホーム  

概要

WEB アプリケーションには、CRUD という機能をつけると良いとされています。 CRUD とは、Create (作成)、Read (読み込み)、Update (更新)、Delete (削除)の頭文字をとったものです。 今回は、Update (更新) 機能をつけていきます。


Show ページの変更

resources / views / tasks / show.blade.php を次のように変更します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Edit | Task</title>
    <link rel="stylesheet" href="{{ url('style.css') }}">
</head>
<body>
<div class="container">
<h1>Edit</h1>
    <!-- ここから -->
    <form method="POST" action="{{ route('tasks.update', $task )}}">
    @csrf
    @method('patch')
    <div class="h-layout">
    <input type="text" name="body" value="{{ old('body', $task->body) }}">
    <button class="btn-black">Update</button>
    </div>
    </form>
    <p class="error">
    @error('body')
    {{ $message }}
    @enderror<br></p>
    <!-- ここまで変更 -->
    <form method="POST" action="{{ route('tasks.destroy', $task) }}">
    @csrf
    @method('delete')
    <p class="h-right">
    <button class="btn-black" onclick="return confirm('Sure?');">Delete</button>
    </p>
</form>
<p class="h-right">
<a href="{{ route('tasks.index')}}"><button class="btn-black">Back</button></a>
</p>
</div>
</body>
</html>


コントローラーの変更

app / Http / Controllers の TaskController.php に update メソッドを追加します。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Task;

class TaskController extends Controller
{
    public function index()
    {
        $tasks = Task::all();

        return view('index')->with(['tasks' => $tasks]);
    }

    public function store(Request $request)
    {
        $request->validate([
            'body'=>'required|max:30',
        ]);

        $task = new Task();
        $task->body = $request->body;
        $task->save();

        return redirect()->route('tasks.index');
    }
    
    public function show(Request $request, Task $task)
    {
        return view('tasks.show')->with(['task'=>$task]);
    }

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

        return redirect()->route('tasks.index');
    }
    
    // ここから
    public function update(Request $request, Task $task)
    {
        $request->validate([
            'body'=>'required|max:30',
        ]);
        
        $task->body = $request->body;
        $task->save();

        return redirect()->route('tasks.index');
    }
    // ここまで追加します
}

php artisan serve で Task アプリを起動して、localhost:8000 で確認してください。

もし、サーバーの準備ができていたら、アプリケーションをサーバーにデプロイする で、作ったアプリケーションを本番サーバーに設置する方法を説明しています。「bbs」というアプリケーションをデプロイする方法を説明していますが、 「bbs」を適宜「task」に読み替えて使ってみてください。



1116 visits
Posted: Jul. 25, 2025
Update: Jul. 26, 2025

ホーム   目次