次に、データを編集する機能をつけます。
目次
ルーティングを設定
下記のように一行追記する。
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TodoController;
// Route::get('/', function () {
// return view('welcome');
// });
Route::get('todo/index', [TodoController::class, 'index'])->name('todo.index');
Route::get('todo/create', [TodoController::class, 'create'])->name('todo.create');
Route::post('todo/store', [TodoController::class, 'store'])->name('todo.store');
Route::get('todo/show/{id}', [TodoController::class, 'show'])->name('todo.show');
Route::get('todo/edit/{id}', [TodoController::class, 'edit'])->name('todo.edit'); //追記
コントローラの設定
コントローラのeditのところに、下記のように追記する。
public function edit($id)
{
$todo = Todo::find($id); //追記
return view('todo.edit', compact('todo')); //追記
}
ビューの設定
edit.blade.phpを作成し、下記のように書いておきます。
<div class="container-sm">
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<h1>editです</h1>
<form method="POST" action="">
@csrf
ID:{{ $todo->id }} <br>
内容:<input type="text" name="content" value="{{ $todo->content }}"> <br>
対応したかどうか:{{ $todo->done }} <br>
作成日時:{{ $todo->created_at }} <br>
更新日時:{{ $todo->udpated_at }} <br>¥
<input type="submit" value="更新する" class="btn btn-info">
</form>
</div>
詳細表示画面と編集画面をリンクさせる
show.blade.phpに、下記の通り追記してリンクボタンを作成します。
<div class="container-sm">
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<h1>showです</h1>
ID:{{ $todo->id }} <br>
内容:{{ $todo->content }} <br>
対応したかどうか:{{ $todo->done }} <br>
作成日時:{{ $todo->created_at }} <br>
更新日時:{{ $todo->udpated_at }} <br>
//ここから追記
<form method="GET" action="{{ route('todo.edit', ['id' => $todo->id] ) }}">
@csrf
<input type="submit" value="変更する" class="btn btn-info">
</form>
</div>
詳細画面から編集画面へのリンクができたら成功です!
お疲れ様でした!